Eu tenho uma action que implementa a interface ModelDriven. Este ModelDriven é um POJO normal, o problema é que um de seus atributos é outro objeto.
Imagine que o meu ModelDriven é um objeto chamado Pessoa e minha pessoa tem um atributo chamado Endereco que é outro objeto. Endereço tem atributos normais, como String, Long e etc.
No JSP quando eu envio o formulário, todas os atributos normais utilizadas, tais como String, int, long em Pessoa são mapeados corretamente, mas todos os dados que devem ser mapeados para endereços não são.
<s:textfield name="nome" id="name" size="25" maxlength="15" />
<s:textfield name="endereco.cep" id="cep" size="9" maxlength="9" />
É assim que eu tento mapear as propriedades. A propriedade nome consigo obtêr corretamente, mas quando se trata de mapear as propriedades no endereço da pessoa esta abordagem não funciona.
O que estou fazendo de errado?
Em tempo, meu atributo Endereço é declarado em Pessoa sendo instanciado, de modo que nunca é nulo.
Desde que, endereco é um atributo de pessoa…
<s:textfield name="pessoa.endereco.cep" id="cep" size="9" maxlength="9" />
Você até poderia usar esta abordagem
<s:textfield name="endereco.cep" id="cep" size="9" maxlength="9" />
Mas, para isso, precisa de um atributo endereco na classe que representa tua Action.
Prezado drsmachado,
Se sua action implementa a interface ModelDriven<E>, então seu JSP consegue acessar seus atributos diretamente. No meu caso, eu não precisaria fazer
basta apenas
para acessar o atributo nome do meu POJO Pessoa.
Imaginei que seria o mesmo para objetos complexos. Se eu tenho um outro POJO dentro de Pessoa, no caso Endereco achei que deveria usar a mesma lógica e acessar diretamente Endereco e depois o cep dele da maneira abaixo:
e não
Porém não está funcionando dessa maneira.
Em tempo, nome acaba mapeado corretamente, o problema está em Endereco e seus atributos.
Não funciona = ?
Erro?
Nulo?
Não aparece?
drsmachado,
O erro é que simplesmente não mapeia, os atributos dentro de Endereco ficam nulos.