Estou tendo o seguinte problema na utilização da displaytag: meu jsp não exibe os dados.
Segue o código do jsp e action:
[code]<%
String uri = request.getContextPath();
uri = “Top.do”;
%>
<display:table name="listauf" class="displaytag" pagesize="10" requestURI="<%=uri%>">
<display:column property="codigo_uf" title="Código UF" sortable="true"></display:column>
<display:column property="matricula" title="matrícula" sortable="true"></display:column>
<display:column property="contratado" title="Contratado" sortable="true"></display:column>
<display:column property="valor" title="Valor" sortable="true"></display:column>
<display:column property="sigla_uf" title="UF" sortable="true"></display:column>
</display:table>[/code]
[code]public class TopAction extends DispatchAction{
@SuppressWarnings("unchecked")
private List listauf = null;
private Session session = null;
private IGerenciadorPersistencia gerPersist = null;
private PrintWriter out;
public ActionForward iniciar(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
return (mapping.findForward("sucesso"));
}
@SuppressWarnings("unchecked")
public List listaUf(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception{
gerPersist = GerenciadorPersistenciaFactory.getGerenciadorPersistencia(GerenciadorPersistenciaFactory.BD_SAPC);
session = gerPersist.getSession();
Query query = session.getNamedQuery("payment_topten_uf");
listauf = query.list();
for(int i = 0; i < listauf.size(); i ++)
{
request.setAttribute("listauf", listauf);
out.print(listauf.toString());
}
return listauf;
}
}[/code]
esta usando Struts 1?
não entendi pq vc fez isso:
[code] public List listaUf(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception{
gerPersist = GerenciadorPersistenciaFactory.getGerenciadorPersistencia(GerenciadorPersistenciaFactory.BD_SAPC);
session = gerPersist.getSession();
Query query = session.getNamedQuery("payment_topten_uf");
listauf = query.list();
for(int i = 0; i < listauf.size(); i ++)
{
request.setAttribute("listauf", listauf);
out.print(listauf.toString());
}
return listauf;
}
}
[/code]
pq está setando o atributo listauf dentro do for? e pq seu método retorna uma lista…
vc deveria colocar esta linha request.setAttribute(“listauf”, listauf); fora do for e retornar um ActionForward, como no método iniciar.
Você poderia ver se agora o código está correto, conforme você sugeriu?
[code]public ActionForward iniciar(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
gerPersist = GerenciadorPersistenciaFactory.getGerenciadorPersistencia(GerenciadorPersistenciaFactory.BD_SAPC);
session = gerPersist.getSession();
Query query = session.getNamedQuery("payment_topten_uf");
listauf = query.list();
request.setAttribute("listauf", listauf);
for(int i = 0; i < listauf.size(); i ++)
{
out.print(listauf.toString());
return (ActionForward) listauf;
}
return (mapping.findForward("sucesso"));
}
}[/code]
quase lá…
arranca esse for dali…
só mais uma coisa, arrancando o for, está configurado para mostra a pagina “sucesso”.
ela esta mapeada certo no struts-config ?
e o seu displaytag esta na mesma página?
Sim, está configurado para exibir a página de sucesso, e o displaytag está na mesma página.
Fiz a alteração conforme sugerido:
[code]public class TopAction extends DispatchAction{
@SuppressWarnings("unchecked")
private List listauf = null;
private Session session = null;
private IGerenciadorPersistencia gerPersist = null;
private PrintWriter out;
public ActionForward iniciar(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
gerPersist = GerenciadorPersistenciaFactory.getGerenciadorPersistencia(GerenciadorPersistenciaFactory.BD_SAPC);
session = gerPersist.getSession();
Query query = session.getNamedQuery("payment_topten_uf");
query.setString(0, "35");
listauf = query.list();
request.setAttribute("listauf", listauf);
out.print(listauf.toString());
return (ActionForward) listauf;
}
}[/code]
e ainda não funcionou?
o que tem na listauf? é uma lista de que tipo de objeto?
nesse objeto tem as propriedades codigo_uf,matricula,contratado,valor e sigla_uf ?
declara o seu displaytag assim, só para ver se fucniona: