Dúvida de implementação

Daí gurizada.

Não consegui decidir se o melhor era esse grupo web, ou se era o java avançado, mas dane-se, eis a dúvida:

Tô fazendo um JSP pra generalizar a construção de botões pra janelas.
A minha dúvida é se eu eu devo usar um jsp com tudo definido e passar quais botões eu quero via parâmetro, ou se eu passo uma lista de parâmetros e ponho o jsp pra montar tudo.

Pra ficar mais claro, vou por os dois exemplos abaixo:

Exemplo 1: Passando lista por parâmetro

// Código da página que importa o JSP: <c:import url="/buttonList.athena"> <c:param name="buttons" value="save,cancel,edit" /> </c:import>

// Código do JSP que gera os botões: <c:forEach items="${param.buttons}" var="buttonName"> <img src="<f:message key="bttn.${buttonName}.path" />" title="<f:message key="bttn.${buttonName}.title" />" alt="<f:message key="bttn.${buttonName}.title" />" onclick="<f:message key="bttn.${buttonName}.action" />" /> </c:forEach>

Exemplo 2: Passando botões um a um

// Código da página que importa o JSP: <c:import url="/buttonList.athena"> <c:param name="saveButton" value="true" /> <c:param name="editButton" value="true" /> <c:param name="cancelButton" value="true" /> </c:import>

// Código do JSP que gera os botões: <c:choose> <c:when test="${param.saveButton}" > <img src="<f:message key="bttn.saveButton.path" />" title="<f:message key="bttn.saveButton.title" />" alt="<f:message key="bttn.saveButton.title" />" onclick="getController().save()" /> </c:when> <c:when test="${param.editButton}" > <img src="<f:message key="bttn.editButton.path" />" title="<f:message key="bttn.editButton.title" />" alt="<f:message key="bttn.editButton.title" />" onclick="getController().edit()" /> </c:when> <c:when test="${param.cancelButton}" > <img src="<f:message key="bttn.cancelButton.path" />" title="<f:message key="bttn.cancelButton.title" />" alt="<f:message key="bttn.cancelButton.title" />" onclick="getController().cancel()" /> </c:when> </c:choose>

A idéia aqui é encontrar a melhor maneira.
Não precisa comentar sobre melhorias no código como o uso de tiles ou coisas do tipo. Sei que dá pra usar temas pra usar um arquivo de imagem único e deixar o nome fixo no código, bastando só substituir o arquivo, mas no stress, fica pra outra hora. Também não precisa dizer que JSF faz sei lá o que, Struts bla bla bla, Velocity, e o caralho a quatro hehehe

Minha dúvida é: Qual das duas é mais aconselhada ? E por que ? A primeira deixa o código mais limpo, mas envolve loops que me parecem estranhos e até desnecessários, bem como a necessidade de chaves extras.

E então? Sugestões?

[]s

Os código são equivalentes, mas é bem gambiarra, pra fazer esse tipo de coisa você deve criar uma taglib, fica muito melhor.

Dê uma olhada em como criar taglibs e você consegue fazer isso aí facil.

http://www.orionserver.com/docs/tutorials/taglibs/

http://jakarta.apache.org/taglibs/tutorial.html

Na real eu sei como criar taglibs, só não tava a fim pq parece, como dizem os famigerados tradutores de títulos de filmes: “muito barulho por nada”

Cometi um erro quando pus o código acima. Pra que a coisa funcionasse como o intencionado, ao invés de:

<c:choose> <c:when test="..."> ... </c:when> <c:when test="..."> ... </c:when> ... </c:choose>

deve ser usado:

<c:if test="..."> ... </c:if> <c:if test="..."> ... </c:if>

Mister Jair, tens como ser mais específico ? Por que é gambi-job ? Sempre ouvi dizer que é mais conselhado usar uma taglib já pronta, principalmente se for uma standard (uóóóó) do que criar uma.

Would you care to elaborate ?

[]s

Eu acho que é POG porque taglib serve EXATAMENTE pra isso, se você puder usar JSTL melhor, se não, faça a sua e não acho que seja “muito barulho por nada”, se for olhar por esse lado, esse seu JSP é muito barulho por nada.

:wink:

Beleza,

Respeito tua opinião, mas infelizmente não satisfaz a minha necessidade.
Se tiveres alguma outra sugestão, ou quem sabe algum argumento mais elaborado, serãp bem-vindos, mas só achar tutorial na internet, eu acredito que ainda sei usar ferramentas de busca. Se for pro lado do taglib, deixa pra lá.

[]s

Olá coleguinhas!

Caso alguém tenha curiosidade, eis o que foi decidido:

Pra simplificar o esquema, decidiu-se usar um catálogo de objetos aos quais o usuário terá permissão, com isso ter-se-á uma lista dos tais objetos que trarão consigo seus próprios atributos, otimizando a busca dos valores necessários para exibição em tempo de execução.

Este catálogo ainda não foi implementado, se alguém tiver interesse, logo que for eu publico um exemplo aqui.

Foi escolhido o primeiro exemplo de código, por ser mais limpo, consumir menos tempo, ser mais compreensível e mais fácil de fazer manutenção.

Continuaremos a usar JSTL, por ser uma ferramenta amplamente utilizada, padrão JEE e por já ter sido e continuar sendo testada por vários desenvolvedores. Criar taglib a toa é só pra quem gosta de reinventar a roda.

Saudações a quase todos!