Listagem com foreach

Olá galera, estou tentando listar vom taglib um Lista de Objetos
mais não estou conseguindo desta maneira … Funcionou sem usar taglibs …

[code]<%@page import=“model.Empresa”%>
<%@page import=“java.util.List”%>
<%@page import=“infra.JpaUtil”%>
<%@page import=“dao.EmpresaDao”%>
<%@page contentType=“text/html” pageEncoding=“ISO-8859-1”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

<% List empresas = new EmpresaDao(new JpaUtil().getEntityManager()).lista(); %>
    <c:forEach var="empresa" items="${empresas}">
        <c:out value="stringTeste" /> //e qual seria a forma certa de se acessar o objeto corrente ? empresa.getNome ???
    </c:forEach>

</body>
[/code]

Obrigado desde já …

Olá wakko!
Vc está usando scriptlets na view para pegar a lista, o certo seria um Controlador enviar a lista para a view e vc capturar com o <c:foreach>, usando VRaptor 3, Struts 2 ou NeoFramework vc consegue fazer MVC de verdade e bem rápido, baixa a apostila da Caleum FJ-21 e FJ-28, comece pela FJ-21:

Veja um exemplo:
Pegar lista de proprietários:
Lá no ProprietarioController eu pego o DAO e mando a lista para a view:

public void lista() {
		result.include("proprietarios", proprietarioDao.listaProprietarios());
	}

E na view JSP eu capturo:

<table>
    <tr>
    <td width="100">C&oacute;digo</td>
    <th width="200">Nome</th> 
    <th width="130">CPF</th>   
     
    </tr>  
	<c:forEach var="proprietario" items="${proprietarios}">
    <tr>      
        <td>${proprietario.codigo }</td>
        <td>${proprietario.nome }</td>        
        <td>${proprietario.cpf }</td>
   </tr>
</c:forEach>
</table>

Abraço!

Também estou com um problema no foreach, no meu caso ele não acessa uma condição, um teste para verificar o valor de um drop down.

[code]

Escolha a Categoria // não entra nesta condição para fazer o teste. ${Categorias_Conteudos.descricao} ${Categorias_Conteudos.descricao} [/code]

No inicio da tela em jsp eu fiz um select para receber o valor do “codcat”, mas parece que este valor está vindo “0”.
Se alguém puder me ajudar também eu agradeço.

[quote=brutomazini]Também estou com um problema no foreach, no meu caso ele não acessa uma condição, um teste para verificar o valor de um drop down.

[code]

Escolha a Categoria // não entra nesta condição para fazer o teste. ${Categorias_Conteudos.descricao} ${Categorias_Conteudos.descricao} [/code]

No inicio da tela em jsp eu fiz um select para receber o valor do “codcat”, mas parece que este valor está vindo “0”.
Se alguém puder me ajudar também eu agradeço.[/quote]

tente o seguinte:

  1. <c:when test="${Categorias_Conteudos.codigo == 'codcat'}">
  2. mude de var para varStatus

  3. c:when para c:if

Olá brutomazini!
Vc está usando algum framework pra desenvolver?
Eu deixaria assim:

<select id="tipo" name="categoria.codCategoria"> 
			 <option value="${categoria.codCategoria}">${categoria.descricao}</option> 
               <c:forEach var="categoria" items="${categoriaList}">                                        
                 <option <c:if test="${categoria.codCategoria == codCategoria}"> selected="selected"</c:if> 
                  value="${categoria.codCategoria}">${categoria.descricao}</option>                 
               </c:forEach>  
            </select>

Deixaria os atributos na classe Categoria com codCategoria e descricao.
Abraço!

Então, eu tenho uma classe categorias em que possui o código e a descricao, mas eu tenho que conferir se o código passado via getParameter é igual ao código do foreach, se for igual este item tem que aparecer selecionado no drop down. Eu estou fazendo uma página de consulta, e ao se clicar sobre a categoria esta informação é enviada para a página de cadastro onde os valores são informados nos campos para poder fazer a alteração caso haja necessidade. Até sexta funcionava belezinha, mas sei lá o que aconteceu que não funciona mais… Mistérios da programação!! heheheh.
Cara, na verdade este é o primeiro projeto em java, aqui na empresa desenvolvemos em c#, mas para um determinado cliente terá que ser desenvolvido em java, por isso as dúvidas.

[quote=Guevara]Olá wakko!
Vc está usando scriptlets na view para pegar a lista, o certo seria um Controlador enviar a lista para a view e vc capturar com o <c:foreach>, usando VRaptor 3, Struts 2 ou NeoFramework vc consegue fazer MVC de verdade e bem rápido, baixa a apostila da Caleum FJ-21 e FJ-28, comece pela FJ-21:

Veja um exemplo:
Pegar lista de proprietários:
Lá no ProprietarioController eu pego o DAO e mando a lista para a view:

public void lista() {
		result.include("proprietarios", proprietarioDao.listaProprietarios());
	}

E na view JSP eu capturo:

<table>
    <tr>
    <td width="100">C&oacute;digo</td>
    <th width="200">Nome</th> 
    <th width="130">CPF</th>   
     
    </tr>  
	<c:forEach var="proprietario" items="${proprietarios}">
    <tr>      
        <td>${proprietario.codigo }</td>
        <td>${proprietario.nome }</td>        
        <td>${proprietario.cpf }</td>
   </tr>
</c:forEach>
</table>

Abraço!
[/quote]

O meu maior problema é que tenho que fazer uma requisição apos o cadastro,
estou utilizando ajax para cadastrar de depois listar os objetos que ja estao
persistidos !

Eu tentei da forma que voce disse mais nao funcionou !
a que classe se refere result.include ?

o que eu preciso mesmo é fazer uma view de listagem … Onde só é retornada a tabela
com os objetos listados …

não estou usando framework por motivo de que estou fazendo um trabalho de comparação …

Obrigado ! até mais …

O exemplo que eu postei era usando VRaptor 3. Se decidir usar esse framework a dica é essa mesmo.
Abraço!

ok, obrigado,
tu tem uma solução para mim usando apenas JSP ?
eu gostaria de resolver meu prblema usando o foreach da taglib …

[code] <%
List empresas = new EmpresaDao(new JpaUtil().getEntityManager()).lista();
%>

     <c:forEach var="empresa" items="${empresas}">  
         <c:out value="stringTeste" /> //e qual seria a forma certa de se acessar o objeto corrente ? empresa.getNome ???  
     </c:forEach> [/code]

dessa maneira acima eu ja tenho uma lista de empresa na variavel empresas,
como eu listaria isso usando o <c:foreach> ?

Obrigado … =}

Tentou colocar um

usando EL ao invés desse <c:out>?
Coloca a tabela ai embaixo do <c:foreach> e veja se mostra os dados.

[code]<%@page import=“javax.persistence.EntityManager”%>
<%@page import=“model.Empresa”%>
<%@page import=“java.util.List”%>
<%@page import=“infra.JpaUtil”%>
<%@page import=“dao.EmpresaDao”%>
<%@page contentType=“text/html” pageEncoding=“ISO-8859-1”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

    <%
    List<Empresa> empresas = new EmpresaDao(new JpaUtil().getEntityManager()).lista();
 %>


    <c:forEach var="empresa" items="${empresas}">
        ${empresa}
    </c:forEach>


</body>
[/code]

Seria isso ? não funciona não …

Agora se eu faço assim <% ${empresas} %> ai sim funciona

Eu estava pensando em algo assim:

<%@page import="javax.persistence.EntityManager"%>
<%@page import="model.Empresa"%>
<%@page import="java.util.List"%>
<%@page import="infra.JpaUtil"%>
<%@page import="dao.EmpresaDao"%>
<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!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=ISO-8859-1">
    </head>
    <body>

        <%
        List<Empresa> empresas = new EmpresaDao(new JpaUtil().getEntityManager()).lista();
     %>
       
           <table>
    <tr>
    <td width="100">Código</td>
    <th width="200">Nome</th>   
     
    </tr>  
	 <c:forEach var="empresa" items="${empresas}">
    <tr>      
        <td>${empresa.codigo }</td>
        <td>${empresa.nome }</td>        
   </tr>
</c:forEach>
</table>
        </c:forEach>
    </body>
</html>

Então cara assim não funciona tambem …

Tenta assim:

<c:forEach var="empresa" items="${empresas.rows}">  

tambem não cara ! =S

Têm certeza que aquele seu scriptlet está trazendo os dados? Deveria funcionar. Têm como fazer um debugg ai?

tenho sim ! eu testei assim e funcionou …

<% for (Empresa emp : empresas) { out.print("<td> - " + emp.getId() + "</td>"); out.print("<td> - " + emp.getNome() + "</td>"); out.print("<td> - " + emp.getCnpj() + "</td>"); out.print("<td> - " + emp.getRazaoSocial() + "</td>"); } %>