Olá de novo pessoal
Estou com um problema… tenho uma coleção parecida com isso:
=======================
Produto Mês Valor
=======================
Produto1, Jan, 123.00
Produto1, Fev, 20.00
Produto1, Total, 143.00
Produto2, Jan, 223.00
Produto2, Fev, 40.00
Produto2, Total, 263.00
Produto3, Jan, 100.00
Produto3, Fev, 99.00
Produto3, Total, 199.00
=======================
Como podem ver, o mesmo produto aparece algumas vezes, mudando o mês e seu valor naquele mês. Então, quero transformar isso em uma tabela onde terei o produto na primeira coluna e o valor de cada mês nas colunas seguintes.
Para isso, antes fiz um processamento e peguei todos os nomes dos meses que aparecem, que são sempre os mesmos na mesma ordem para cada produto, e coloquei em uma Collection também.
O problema é que não consigo fazer isso usando o struts… tá difícil a coisa hehehe. Aqui está meu código cheio de erros:
<table cellpadding="0" cellspacing="0" border="1" style="margin-bottom: 1cm;">
<tr class="rotuloLista7pt">
<td width="300">Título da Tabela</td>
<logic:iterate name="colunasRelatorio" id="coluna" scope="request">
<td width="100"><bean:write name="coluna" property="value" /></td>
</logic:iterate>
</tr>
<!-- os problemas começam por aqui... -->
<bean:define id="colunasRelatorio" name="colunasRelatorio" type="java.util.Collection" scope="request" />
<logic:iterate name="tabela" property="value" id="lista" indexId="coluna">
<!-- se o índice for um múltiplo do número de colunas apresentadas, cria uma nova linha
e coloca o nome do produto -->
<%= (coluna % colunasRelatorio.size()) == 0 ? "<tr><td>" + lista.getNome() + "</td>" : ""%>
<td><bean:write name="lista" property="valorRealizadoMes" /></td>
<!-- se o próximo índice for um múltiplo do número de colunas apresentadas, fecha a linha atual -->
<%= ((coluna + 1) % colunasRelatorio.size()) == 0 ? "</tr>" : ""%>
</logic:iterate>
</table>
Aqui estão os erros que o jboss me retornou…
Generated servlet error:
[javac] Compiling 1 source file
[javac] umPathGrandao\detalheProdutosTarifas_jsp.java:335: operator % cannot be applied to java.lang.Integer,int
[javac] out.print( (coluna % colunasRelatorio.size()) == 0 ? "<tr><td>" + lista.getNome() + "</td>" : "");
[javac] ^
[javac] umPathGrandao\detalheProdutosTarifas_jsp.java:335: cannot resolve symbol
[javac] symbol : method getNome ()
[javac] location: class java.lang.Object
[javac] out.print( (coluna % colunasRelatorio.size()) == 0 ? "<tr><td>" + lista.getNome() + "</td>" : "");
[javac] ^
[javac] umPathGrandao\detalheProdutosTarifas_jsp.java:342: operator + cannot be applied to java.lang.Integer,int
[javac] out.print( ((coluna + 1) % colunasRelatorio.size()) == 0 ? "</tr>" : "");
[javac] ^
[javac] umPathGrandao\detalheProdutosTarifas_jsp.java:351: incompatible types
[javac] found : java.lang.Object
[javac] required: java.lang.Integer
[javac] coluna = _jspx_coluna_1;
[javac] ^
[javac] 4 errors
Valeu pessoal, já agradeço desde já, hehehe, flw
