ForEach dentro de outro ForEach ? JSP + VRaptor

Opa ! Baum ?

Seguinte estou com um problema tenho uma lista de objetos que dentro de cada objeto possui uma lista de objetos…

estou tentando fazer isso:

c:forEach items="${documentacao}" var="documentacao"> <tr > <td >${documentacao.descricao }</td> <td><c:forEach items="${documetacao.cnae}" var="documetacao.cnae"> ${documetacao.cnae.classe }, </c:forEach></td>

mas ele não me retorna o segundo foreach alguem tem alguma ideia do que posso fazer ? para ele me retornar o segundo nivel do foreach ?

Obrigado :slight_smile:

Mude o nome da variável de documetacao.cnae para cnae, depois passe a usar esse nome: ${cnae.classe}…

Uma dica para não ficar uma vírgula sobrando no final desses itens:

&lt;c:forEach items="${documentacao}" var="documentacao"&gt;  
	&lt;c:set var="virgula" value="" /&gt;
	&lt;tr &gt;
		&lt;td &gt;${documentacao.descricao }&lt;/td&gt;
		&lt;td&gt;
			&lt;c:forEach items="${documetacao.cnae}" var="cnae"&gt;
				${virgula}${cnae.classe}
				&lt;c:set var="virgula" value=", " /&gt;
			&lt;/c:forEach&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/c:forEach&gt;

como está o seu controller?

obs:

c:forEach items="${documentacao}" var="documentacao">  
            <tr >  
              <td >${documentacao.descricao }</td> 
              //ficaria melhor
              <td><c:forEach items="${documetacao.cnae}" var="cnae"> ${cnae.classe }, </c:forEach></td>  

continua não aparecendo nada

EDIT

Meu controller

@Restrito public void lista() { result.include("documentacao", new DocumentacaoDao().listaTudo()); }

meu Modelo

[code]public List getCnae() {
return cnae;
}

public void setCnae(List<Cnae> cnae) {
	this.cnae = cnae;
}[/code]

Mostre o seu controller para nós.

Você debugou para saber se essa lista está vindo preenchida?
Olhe se ela não está vindo como LAZY do Hibernate.

Tem como você nos mostrar esse for each inteiro?

meu foreach

Ele só não retorna os objetos do ${documentacao.cnae } os outros objetos da documentacao eu consigo acessar normalmente e se eu fizer ${documentacao.cnae[1].classe } ele me retorna

<c:forEach items="${documentacao}" var="documentacao"> <c:set var="virgula" value="" /> <tr class="odd"> <td class="to_hide_phone ">${documentacao.descricao }</td> <td class="to_hide_phone "> <c:forEach items="${documetacao.cnae}" var="cnae"> ${virgula}${cnae.classe} <c:set var="virgula" value=", " /> </c:forEach> </td> <td class="ms "><div class="btn-group"> <a class="btn btn-small" rel="tooltip" data-placement="left" data-original-title=" Editar " href="/webga/documentacao/download?desc=${documentacao.descricao }"><i class="gicon-edit"></i></a> </div></td> </tr> </c:forEach>

vc depurou o código? verificou se a lista está vazia?

a lista esta retornando objetos só não funciona o foreach que esta dentro do outro foreach

Achei:

está faltando um “n”, é documentacao
<c:forEach items="${documetacao.cnae}" var=“cnae”>

#shameonme

desculpe pela gafe e muito obrigado rafael mais uma vez você salvou o dia rsrs

Hahahaha, é normal isso… Esses “bugs” são os mais dificeis de encontrar…

pior que a gente perde um tempão nesse tipo de erro hah