Passar parâmetro List de Action para um JSP

2 respostas
M

Olá pessoal,

Meu problema é bastante simples, mas não estou conseguindo resolver :S.

Tenho uma Action que chama uma funcao que retorna um List. Preciso pegar esse list usá-lo no JSP, mas da forma que estou fazendo não está funcionando.

O execute de meu Action está como abaixo:

public ActionForward execute (
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
	{

		BuscaGruposForm buscaGruposForm = (BuscaGruposForm) form;

		if (buscaGruposForm.getDescricao() != null)
		{
                        try {
                            request.getSession().setAttribute("listaGrupos",
                                    GruposService.getInstance()
                                    .getGruposEspList(buscaGruposForm.getDescricao()));
                        }
                        catch(HibernateException e){
                            
                        }
			buscaGruposForm.clear();
		}

		return mapping.findForward("success");

	}

No JSP, tenho apenas:

<logic:iterate id="element" name="listaGrupos" type="pacote.Bean.Grupos" >
   <tr>
      <td><bean:write name="element" property="grupo" /></td>    
      <td><bean:write name="element" property="descricao" /></td>	
   </tr>
   </logic:iterate>

Achei que ele pegaria sozinho, jah que fiz um setAttribute. Tentei fazer um getAttribute, mas retornou nulo. Minha função NÂO retorna nulo.

Alguem pode me ajudar a ver o q tou fazendo errado? Agradeço

2 Respostas

rodrigo_corinthians

Se no Jsp usou o “getAttribute” e mesmo assim retornou nulo vc concorda que o problema ainda esteja no Action né? :wink: Porq se não ele tinha retornado algo da sessão.

Debuga e verifica se esse método(getGruposEspList) retorna alguma coisa ou talves o critério que passou não tenha retornando nenhum registro na pesquisa.

O código que vc mostrou está correto. :!:

Sem mais, Rodrigo.

M

Eu adoraria debugar, mas isso me impede: http://www.guj.com.br/posts/list/28434.java
Na verdade, meu sonho de consumo atual é debugar meu sistema, mas como gastei tanto tempo nisso e não consegui resolver, fui andando.

minha funcao está dessa forma:

/**
     * getGruposEspList() - retorna um List com todos os
     * objetos Grupos armazenados no banco cujo nome tenha as condicoes especificadas no parametro.
     *
     */
    public List getGruposEspList(String p_descricao) {
        Session session = ConnectionFactory.getInstance().getSession();
        
        try {
            Query query =
                    session.createQuery(
                    "select g from pacote.Bean.Grupos g" +
                    " where g.descricao like p_descricao");
            query.setString("p_descricao", "%"+p_descricao+"%");
            return query.list();
            
        } catch (HibernateException e) {
            System.err.println("Hibernate Exception" + e.getMessage());
            throw new RuntimeException(e);
        } finally {
            if (session != null) {
                try {
                    session.close();
                } catch (HibernateException e) {
                    System.err.println("Hibernate Exception" + e.getMessage());
                    throw new RuntimeException(e);
                }
                
            }
        }
    }

Pro caso de estar errada, tentei substitui-la na chamada por esta outra (que soh muda o HQL, e jah usei outras vezes e sei que está certa):

/**
     * getGruposList() - retorna um List com todos os
     * objetos Grupos armazenados no banco
     *
     */
    public List getGruposList() {
        Session session = ConnectionFactory.getInstance().getSession();
        
        try {
            Query query =
                    session.createQuery(
                    "select g from pacote.Bean.Grupos g order by g.grupo");
            return query.list();
            
        } catch (HibernateException e) {
            System.err.println("Hibernate Exception" + e.getMessage());
            throw new RuntimeException(e);
        } finally {
            if (session != null) {
                try {
                    session.close();
                } catch (HibernateException e) {
                    System.err.println("Hibernate Exception" + e.getMessage());
                    throw new RuntimeException(e);
                }
                
            }
        }
    }

Ambas retornaram nulo. E a segunda eu sei que funciona!

No momento, meu JSP está assim:

<br>
    
   <%
      List gruposList = (List) request.getAttribute("listaGrupos"); 
      request.setAttribute("grupos", gruposList);
   %>    
    
   <table border=1 width=100%>
   <tr>
      <td><b>Grupo</b></td> 
      <td><b>Descrição</b></td>	
   </tr>
   <logic:iterate id="element" name="grupos" type="pacote.Bean.Grupos" >
   <tr>
      <td><bean:write name="element" property="grupo" /></td>    
      <td><bean:write name="element" property="descricao" /></td>	
   </tr>
   </logic:iterate>
   </table>
   <br><br><br>

Jah mudei e desmudei a torto e a direito. O que pode estar errado?

Agradeço d+ a ajuda que vc jah deu. E as outras que poderão vir tb, hehe

Criado 1 de agosto de 2005
Ultima resposta 1 de ago. de 2005
Respostas 2
Participantes 2