Dúvida Displaytag Struts

5 respostas
Marcio_Nogueira

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:

<%
					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>
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;
	      }
	}

5 Respostas

alves.Felipe
esta usando Struts 1? não entendi pq vc fez isso:
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;   
          }   
    }
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.
Marcio_Nogueira

Você poderia ver se agora o código está correto, conforme você sugeriu?

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"));
	   }
	
	
	}
alves.Felipe

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?

Marcio_Nogueira

Sim, está configurado para exibir a página de sucesso, e o displaytag está na mesma página.
Fiz a alteração conforme sugerido:

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;
		
		
			
	   }
	
	
	}
alves.Felipe

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:

Criado 10 de janeiro de 2011
Ultima resposta 10 de jan. de 2011
Respostas 5
Participantes 2