ForEach dentro de outro ForEach ? JSP + VRaptor

11 respostas
G

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:

11 Respostas

Rafael_Guerreiro

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;
kadu.m.lino

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>
G

continua não aparecendo nada

EDIT

Meu controller

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

meu Modelo

public List<Cnae> getCnae() {
		return cnae;
	}

	public void setCnae(List<Cnae> cnae) {
		this.cnae = cnae;
	}
Rafael_Guerreiro

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?

G

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>

kadu.m.lino

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

G

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

Rafael_Guerreiro

Achei:

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

G

#shameonme

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

Rafael_Guerreiro

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

hannahh

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

Criado 7 de março de 2013
Ultima resposta 7 de mar. de 2013
Respostas 11
Participantes 4