kallas
Julho 20, 2010, 4:20pm
#1
Boa tarde, pessoal!
Estou com uma dúvida que é a seguinte: na minha classe de negócio eu obtenho uma lista e defino uma variável de sessão:
request.setAttribute("lstResultadoConsulta", lstResultadoConsulta);
Dessa forma, na JSP itero sobre a lista, exibindo o conteúdo do atributo “qtde” (obj.qtde). Minha dúvida é como exibir uma outra coluna para mostrar o resultado de um cálculo com o valor do atributo “qtde” (qtde x 10, por exemplo, executado na própria JSP).
Se consegui expressar bem minha dúvida… desde já, agradeço a atenção!
Kallás.
kallas
Julho 23, 2010, 4:32pm
#2
Pessoal, consegui resolver a situação. Então, postei o código abaixo para quem passar pela mesma dificuldade.
Cenário:
Colocar uma lista no escopo session. Em seguida, pegá-la na JSP e exibir o valor de alguns atributos em uma tabela, montando uma coluna com valores calculados na própria página.
Solução:
Código do servidor:
session.setAttribute("lstResultadoConsulta", lstResultadoConsulta);
session.setAttribute("qtdeTotal", qtdeTotal);
Código da página JSP:
<%@ page import="br.gov.empresa.projeto.pojo.Item"%>
<%@ page import="java.text.DecimalFormat"%>
<tr class="displayTag">
<td>
<display:table name="lstObj" id="obj" align="center" requestURI="umaAction.do" width="100%">
<display:column property="descricao" title="Descrição" align="left" href="UmaAction.do" paramId="chave" paramProperty="parametro" />
<display:column property="quantidade" title="Total de Pessoas" align="center" href="UmaAction.do" paramId="chave" paramProperty="parametro" />
<display:column title="Porcentagem (%)" align="center" href="UmaAction.do" paramId="chave" paramProperty="parametro">
<logic:present name="qtdeTotal">
<bean:define id="intQtdeTotal" type="java.lang.Integer" name="qtdeTotal"/>
<%
String strPercentualPessoas = intQtdeTotal.toString();
float percentual = 0;
DecimalFormat df = null;
if ((float)intQtdeTotal > 0) {
percentual = ((float)((Item)objItem).getQuantidade() / (float)intQtdeTotal) * 100;
df = new DecimalFormat("#.00");
strPercentualPessoas = df.format(percentual);
}
%>
<%=strPercentualPessoas%>
</logic:present>
</display:column>
</display:table>
</td>
</tr>
Espero que ajude!
Kallás
kallas
Julho 23, 2010, 4:35pm
#3
opa, desculpem…
No código do servidor, onde está escrito:
session.setAttribute("lstResultadoConsulta", lstResultadoConsulta);
leia-se
session.setAttribute("lstObj", lstObj);
Valeu!
Cara, te aconselho a não usar Scriplet “<% %>”. Esse tipo de código tem sido repudiado na maioria dos lugares.
oq vc poderia fazer é, realizar o cálculo no servlet e enviar para o JSP pronto.
Vc pode enviar um map tipo: Map<total, lista> e pronto. Sem Scriplet e teu chefe (ou futuro chefe) vai ficar feliz! =D