Vraptor Como recuperar 2 Objetos diferentes

4 respostas
E.Silva

Olá pessoal,

Estou trabalhando em um projeto que faz uso do vraptor, algo novo pra mim.
Estou lendo a documentação aos poucos.

Li muitos tópicos no fórum tentantando encontrar a solução, algumas
parecidas mas não encontrei.

Se alguém puder me ajudar.

Posso 2 objetos diferentes vindos da minha view pela minha controller.

Exemplo:

VIEW:

<form action="cadastroEndereco" method="post">
          <input type="text" value="${Endereco.logradouro}" name="Endereco.logradouro"/>
          <input type="text" value="${Endereco.numero}" name="Endereco.numero"/>
          <input type="text" value="${Endereco.complemento}" name="Endereco.complemento" />
         <input type="text"  value="${Cliente.nome}" name="Cliente.nome"/>
      </form>

Controller:

@Post
     public void cadastroEndereco( Endereco endereco ){
         // valida e persiste endereco
     }

Estou tentando algo do tipo :
Controller:

@Post public void cadastroEndereco( Endereco endereco, Cliente cliente ){ // valida e persiste endereco e cliente } :roll:

4 Respostas

Lucas_Cavalcanti

os nomes são de acordo com os nomes dos parâmetros (ex: endereco) e não pelo nome da classe.

seria assim:

<input type="text" value="${endereco.logradouro}" name="endereco.logradouro"/>
E.Silva

Lucas, Obrigado pela ajuda.

Já me esclareceu algo.

Ao mesmo tempo me surgiu outra dúvida?
Tenho dentro do metódo da controller um
validator que pega este parâmetro passado e depois
persiste por um dao.

No método da minha controller é passado a classe Endereço
como parâmetro quando ocorre a requisição,
o vraptor já compara os elementos passados da página
com o parâmetro do método da controller ?

O que quero fazer é neste metódo
pegar os elementos vindos da página
separados para poder persistir duas classes
diferentes ao mesmo tempo, é possível fazer isto ?

Exemplo:

View:

<form action="cadastroEndereco" method="post">  
     <input type="text" value="${endereco.logradouro}" name="endereco.logradouro"/>  
     <input type="text"  value="${cliente.nome}" name="cliente.nome"/>  
</form>

Controller:

@Post  
public void cadastroEndereco( Endereco endereco, Cliente cliente ){  
    // pegar endereco e cliente para tratar. 

      validator.validate(endereco);
      validator.validate(cliente);


      daoEndereco.salva(endereco);
      daoCliente.salva(cliente);
}
Lucas_Cavalcanti

isso mesmo… o VRaptor usa o nome do parâmetro, vc pode passar qtos vc quiser.

E.Silva

Lucas, muito Obrigado.

Só pra constar, o VRaptor esta sendo usado no projeto.
:smiley:

Criado 15 de dezembro de 2011
Ultima resposta 19 de dez. de 2011
Respostas 4
Participantes 2