Exibir collection dentro de um jsp

14 respostas
T

bom dia a todos.

tenho 1 bean que tem um atributo que é uma collection.

estou tentando exibir essa collection dentro de um jsp.

estou tentando assim:

<c:forEach var="beanTelefone" items="${beanAgente.telefones}">
                    <tr>
                        <td><c:out value="${beanTelefone.numero}" /></td>   
                    </tr>            
                </c:forEach>

o atributo nome do beanAgente consigo exibir, só a collection de telefone que não consigo.

não da nenhum erro. já fiz um teste e a collection está sendo populada.

alguém pode me ajudar.

obrigado a todos.

14 Respostas

T

estou procurando e não encontro.

T

mas se o cliente tiver um atributo collection que armazena os telefones dele.

como faço para exibir?

já tentei assim:

<c:forEach var="beanTelefone" items="${beanCliente.listaTelefone}">     
  ${beanTelefone.numero}   
</c:forEach>

e não consigo.

T

obrigado por ter respondido, mas não é bem isso que estou querendo. vou tentar explicar melhor.

o problema: o cliente pode ter mais que 1 telefone.
solução: crio um bean de cliente e dentro bean, vai ter um atributo(telefone) do tipo collection que armazena os varios beans de telefone.

exemplo:

Cliente clienteJoao = new Cliente();   
clienteJoao.setNome("Joao") ;   

Telefone telefoneJoaoResidencial = new Telefone();   
telefoneJoaoResidencial.setNumero("11111111")

Telefone telefoneJoaoCelular = new Telefone();   
telefoneJoaoCelular.setNumero("2222222")
  
clienteJoao.setTelefone(telefoneJoaoResidencial);
clienteJoao.setTelefone(telefoneJoaoCelular );

request.setAttribute("beanDe1Cliente" , clienteJoao);

como faço para exibir os telefones do cliente?

estou tentando assim:

<c:forEach var="beanTelefone" items="${clienteJoao.telefone}">
                <tr>
                    <td><c:out value="${beanTelefone.numero}" /></td>   
                </tr>
            </c:forEach>

e não consigo.

von.juliano

Você não está usando uma Collection. Crie um ArrayList de Telefones no seu Cliente, faça assim e vai funcionar:

Cliente c1 = new Cliente(); ArrayList telefones = new ArrayList(); telefones.add(new Telefone("111111111")); telefones.add(new Telefone("222222222")); telefones.add(new Telefone("333333333")); c1.setTelefones(telefones); request.setAttribute("cliente", c1);E no jsp:

<c:forEach var="telefone" items="${cliente.telefones}"> <li>${telefone.numero}</li> </c:forEach>
Blz? Flw! :thumbup:

T

tentei dessa maneira e também não foi.

von.juliano

Coloca aqui o código do seu Servlet.

T
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBean id="BeanAgente" class="wb.src.bean.Bagente" scope="page" />

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Manutenção Agente</title>
    </head>
    <body>
        
        <form action="agente">
            
            <table border="1">
                <tbody>
                    <tr>
                        <td>Nome: </td>
                        <td><input type="text" name="txtNome" value="${beanAgente.nome}" /></td>
                    </tr>
                </tbody>
            </table>
            
            <br></br>

            <table border=1> 
                
                <tr>   
                    <td>DDD</td>   
                    <td>Manutenção</td>                     
                </tr>          
                
                <c:forEach var="Btelefone" items="${beanAgente.telefone}">
                    <tr>
                        <td><c:out value="${Btelefone.numero}" /></td>   
                        <td>
                            <a href="agente?oQueExecutar=alteraTelefone&pk=${Btelefone.pk}">Altera</a> 
                            <a href="agente?oQueExecutar=excluiTelefone&pk=${Btelefone.pk}">Exclui</a> 
                        </td>
                    </tr>            
                </c:forEach>
            </table>
            
            <input type="hidden" name="oQueExecutar" value="salva" />
            <input type="hidden" name="pk" value="${BeanAgente.pk}" />
            
            <br></br>
            
            <input type="submit" value="salva" name="btnSalva" />
            
        </form>
        
    </body>
</html>

se eu coloco:

<input type="text" name="txtNome1" value="${beanAgente.telefone[0].numero}" />

aparece 1 telefone.

T

desculpa.

esse é o metodo que uso no servlet.

private void altera(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String pk = request.getParameter("pk");

        wb.src.bean.Bagente beanAgente =
                this.buscaPk(pk);
        
        if (beanAgente != null) {
            request.setAttribute("beanAgente", beanAgente);

            RequestDispatcher view =
                    request.getRequestDispatcher("/manutencao/agente.jsp");

            view.forward(request, response);

        } else {
            throw new FalhaException("Erro ao tentar alterar o registro.");
        }

    }
T

utilizo o hibernate para carregar os dados.

T

estava faltando, no jsp.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

ruim que não dava nenhum tipo de erro.

obrigado pela ajuda de todos.

I

Vaii na busca aqui do guj que voi vai achar rapidinho duvidas referentes a este problema … falow !!! :slight_smile:

I
<c:forEach var="listaCliente" items="${listaCliente}">  
		         ${listaCliente.nomeCliente} 
         </c:forEach>

lista cliente é a sua colecao no caso neste exemplo !!!

Espero que ti ajude…

I
Cliente cliente = new Cliente();

 cliente.setNome("Joao") ;

 Cliente cliente_1 = new Cliente();

 cliente_1.setNome("Joao");

 List<Cliente> listaCliente = new ArrayList<Cliente>();

 listaCliente.add(cliente);

 listaCliente.add(cliente_1);

 request.setAttribute("listaCliente" , listaCliente );
JSP

 <c:forEach var="listaCliente" items="${listaCliente}">    
    ${listaCliente.nomeCliente}   
  </c:forEach>
I

Essa é sua JSP …queremos o código so seu servlet !!

Criado 18 de abril de 2008
Ultima resposta 18 de abr. de 2008
Respostas 14
Participantes 3