vraptor3 - problema na recuperação de objeto via parametro

2 respostas
A

ola pessoal.

tenho um objeto onde um dos atributos é uma lista de outros objetos.

na tela de cadastro consigo exibir o objeto e seus sub-objetos, no caso 1 cliente e seus N dependentes.

quando dou "Enviar" nesta tela consigo ver na controller todos os atributos do cliente, exceto os atributos dos dependentes.

este é o código de meu jsp:

<form action="/aplicacao_teste/salva" method="post">
	
		cliente.id: ${cliente.id}
		<input type="text" name="cliente.id" value="${cliente.id}">
		<br />
		cliente.nome: 
		<input type="text" name="cliente.nome" value="${cliente.nome}">
		<br />
		
		dependentes
		<br /> 


		<c:forEach items="${cliente.dependentes}" var="dependente_corrente">
			id: 
			<input type="text" name="cliente.dependentes.dependente.id" value="${dependente_corrente.id}"> 
			<br />
			nome: 
			<input type="text" name="liente.dependentes.dependente.nome" value="${dependente_corrente.nome}">
			<br />
			<br /> 		
		</c:forEach>
	
		
		<input type="submit" value="enviar">
	</form>
minha controller tem:
@Post
	@Path("/salva")
	public void salva(Cliente cliente) {	
		System.out.println(cliente.getNome());
		System.out.println(cliente.getDependentes().toString());		
	}

um exemplo de saida:
alex
[] <<= vetor veio vazio

já tentei passar separadamente os dependentes

@Post
	@Path("/salva")
	public void salva(Cliente cliente, List<Dependente> dependentes) {

mas também não funcionou.

Para fazer isto segui as orientações da documentação do VRaptor3 (http://vraptor.caelum.com.br/documentacao/resources-rest/).

Quem puder me ajudar... agradeço.

2 Respostas

Lucas_Cavalcanti

muda o c:foreach pra isso:

<c:forEach items="${cliente.dependentes}" var="dependente_corrente" varStatus="s">  
        id:   
        <input type="text" name="cliente.dependentes[${s.index}].dependente.id" value="${dependente_corrente.id}">   
         <br />  
         nome:   
         <input type="text" name="cliente.dependentes[${s.index}].dependente.nome" value="${dependente_corrente.nome}">  
         <br />  
         <br />          
     </c:forEach>

pra popular uma lista vc precisa passar os indices, senão não funciona

[]'s

Lucas_Cavalcanti

na verdade acho que certo seria:

cliente.dependentes[${s.index}].nome
Criado 8 de janeiro de 2010
Ultima resposta 8 de jan. de 2010
Respostas 2
Participantes 2