[...]
<s:if test="!materias.isEmpty">
<table width="730" cellspacing="1" cellpadding="4">
<tr>
<tr width="120">Matéria</tr>
<% String[] nomesMeses = DateFormatSymbols.getInstance().getShortMonths(); %>
<% for (int mes = 0; mes < 12; mes++) { %>
<td><%=nomesMeses[mes]%></td>
<% } %>
<td colspan="4" >Total</td>
</tr>
<s:iterator value="materias.entrySet()">
<tr>
<td><s:property value="key.nomeMateriaAbreviado"/></td>
<s:iterator value="value">
<td><s:property/></td>
</s:iterator>
<td><s:property value="total"/></td>
</tr>
</s:iterator>
</table>
</s:if>
[...]
Olá amigos, tenho uma página JSP que preciso criar uma linha onde cada coluna seja criado os meses [Janeiro, Fevereiro,…,Novembro, Dezembro]…
A única maneira foi criar um código java na página JSP, alguém tem ideia de como fazer isso com o struts2?
Grato,
Obrigado.
Você está fazendo exatamente o contrário do que visa o uso de Struts 2.
Você não tem que se preocupar com isto na camada view, mas, na controller (Action, no caso).
A view só precisa mostrar e validar coisas simples, inerentes à interação com o usuário.
Logo, se vai criar uma tabela onde cada coluna representa um mês do ano, faça isso na Action e já mande pronto para a jsp.
No caso então, esse código java que engessei na página JSP devo fazer na Action e na página JSP só obtenho o objeto vindo da Action me retornando esta lista, correto?
Em vez de fazer assim usa a tag foreach da api jstl que é a forma mais correta de se fazer uma página jsp
Ou utilizar o <s:iterator>
A questão é que ele estava obtendo os valores na própria jsp e, isso, não é o mais adequado.
Por isso sugeri que obtivesse os dados na action e então passasse a jsp.
Ou utilizar o <s:iterator>
A questão é que ele estava obtendo os valores na própria jsp e, isso, não é o mais adequado.
Por isso sugeri que obtivesse os dados na action e então passasse a jsp.[/quote]
Eu entendi o que você estava querendo dizer apenas complementei falando que ele deveria utilizar as tags e não realmente codigo java.
e caso não queira utilizar diretamente o struts para obter o objeto com os messes você pode fazer isto utilizando somente tags na sua jsp, que seria mais correto que a forma como você fez no caso ficaria mais ou menos assim
<jsp:useBean id="messes" class="java.text.DateFormatSymbols" />
<c:forEach items="${messes.shortMonths }" var="mes">
${mes }
</c:forEach>
Ou utilizar o <s:iterator>
A questão é que ele estava obtendo os valores na própria jsp e, isso, não é o mais adequado.
Por isso sugeri que obtivesse os dados na action e então passasse a jsp.[/quote]
Eu entendi o que você estava querendo dizer apenas complementei falando que ele deveria utilizar as tags e não realmente codigo java.
e caso não queira utilizar diretamente o struts para obter o objeto com os messes você pode fazer isto utilizando somente tags na sua jsp, que seria mais correto que a forma como você fez no caso ficaria mais ou menos assim
<jsp:useBean id="messes" class="java.text.DateFormatSymbols" />
<c:forEach items="${messes.shortMonths }" var="mes">
${mes }
</c:forEach>[/quote]
Com o iterate do struts, ele teria menos complicação, menos taglibs e menos coisas para se preocupar.
Concordo que JSTL e EL é super simples, mas ele já está perdidinho agora, imagina se misturar as coisas…
Enfim, é uma ótima opção.