Setar um valor de um bean dentro de outro bean

18 respostas
jason_bourne

Pessoal,

Uma dúvida bem basicona. Eu tenho um bean com getters and setters. Até ai tudo bem, eu sei setar o valor apenas fazendo isso: setPessoa(“blablabal”). Mas e quando tem um bean dentro de outro bean. Por exemplo setPessoa(setRG(“8348923”))?.

Eu sei que isso não funciona. Mas como eu poderia setar esse valor do RG?

18 Respostas

shoko

Se eu entendi oq vc quer eh mais ou menos isso

Fabrica fabrica = new Fabrica()
fabrica.getPessoa().setRG("658456")

mais no caso a classe Fabrica deve ter um atributo os métodos get e set de um atributo do tipo Pessoa e na classe Pessoa voce tem os get e set dos RG's

acho que agora ficou mais claro

B

Eduacsp,

Seguinte, quase isso que o Shoko falou. porém:

Você tem um Bean: Pessoa pessoa = new Pessoa();

Ai dentro da classe Pessoa, tem uma propriedade carro

private Carro carro = new Carro();

public Carro getCarro() {

return carro;

}

Então para chamar, basta:

pessoa.getCarro().setCor(“vermelho”);

Abs,

Bruno Tafarelo

jason_bourne
shoko:
Se eu entendi oq vc quer eh mais ou menos isso
Fabrica fabrica = new Fabrica()
fabrica.getPessoa().setRG("658456")

mais no caso a classe Fabrica deve ter um atributo os métodos get e set de um atributo do tipo Pessoa e na classe Pessoa voce tem os get e set dos RG's

acho que agora ficou mais claro

ta dando java.lang.NullPointerException nessa linha fabrica.getPessoa().setRG("658456")

pimenta

setPessoa(“BlaBla”).getPessoa().setRG(“1321”)

Só um toque, eduacsp, quando falar que tem um Bean não precisa falar que tem getters e setters, pois, se não os tiver, não será um Bean.

Abraços,

B

Educasp,

Você instanciou a propriedade Pessoa?

Talvez tenha faltado isso.

class Fabrica {

private Pessoa pessoa = new Pessoa();

public Pessoa getPessoa() { return pessoa;}

public void setPessoa(Pessoa pessoa) {this.pessoa = pessoa;}

}

Abs,

Bruno Tafarelo

shoko

sim pois minha classe é diferente na sua no caso vc tem que adaptar conforme o seu código
o que eu te passei foi só um modelo.

shoko

btafarelo:
Educasp,

Você instanciou a propriedade Pessoa?

Talvez tenha faltado isso.

class Fabrica {

private Pessoa pessoa = new Pessoa();

public Pessoa getPessoa() { return pessoa;}

public void setPessoa(Pessoa pessoa) {this.pessoa = pessoa;}

}

Isso mesmo porém não se instancia um Objeto( nao se da new) em um Bean, apenas se declara o atributo

jason_bourne

Agora uma pergunta relacionada ao jsp. Que nome eu dou no o que eu colocaria nesse name para referenciar o RG? pq eu tenho um Iterator que lê todos os campos do form e joga no bean. Só que eu não sei como nomear esse campo.

pimenta

tira o set/get do nome do acessor que você vai ter o nome da sua propriedade.

Ex.:

Se você tem setRg() o nome da sua propriedade é rg.

Abraços,

jason_bourne

pimenta:
tira o set/get do nome do acessor que você vai ter o nome da sua propriedade.

Ex.:

Se você tem setRg() o nome da sua propriedade é rg.

Abraços,

eu coloco só rg e vem nulo

shoko

no caso vc quer inserir ou vc quer visualizar o rg inserido?

jason_bourne

inserir…eu pensei em colocar mas não funciona. :frowning:

shoko

nao nao… vc só coloca o rg mesmo, porém aonde vc está salvando isso???

jason_bourne

Ele é enviado pra um action normal que depois chama um iterator para popular o bean. Assim:

PessoaDTO pessoa = new PessoaDTO();

for(Iterator it=set.iterator();it.hasNext();){
 pessoa = (PessoaDTO)it.next();
.
.
.
shoko

não beleza mais como vc sabe que não está indo o valor, pois lá você digira o parametro para enviar correto? e depois você tem que utilizar uma chamada de algum método no caso uma Action(você está utilizando MVC?) e esse método deve salvar o valor em algum lugar no caso um Banco para realmente você ter a certeza d que foi inserido.

Ou está ocorrendo algum erro ou algo assim?

Tente algo do tipo

<html>
Digite o seu rg:
<form action="testaRg.jsp">
RG:<input  name="rg"/><input type="submit"/>
</form>
testaRg.jsp
<html>
seu rg é ${param.rg}
</html>

com isso na pagina que será redirecionada voce poderá ver se deu certo

jason_bourne
shoko:
não beleza mais como vc sabe que não está indo o valor, pois lá você digira o parametro para enviar correto? e depois você tem que utilizar uma chamada de algum método no caso uma Action(você está utilizando MVC?) e esse método deve salvar o valor em algum lugar no caso um Banco para realmente você ter a certeza d que foi inserido.

Ou está ocorrendo algum erro ou algo assim?

Tente algo do tipo

<html>
Digite o seu rg:
<form action="testaRg.jsp">
RG:<input  name="rg"/><input type="submit"/>
</form>
testaRg.jsp
<html>
seu rg é ${param.rg}
</html>

com isso na pagina que será redirecionada voce poderá ver se deu certo

o valor esta vindo...o problema é q ele no iterator não consegue inserir o valor no bean.

shoko
Iterator<PessoaDTO> iterator = list.iterator();
while(iterator.hasNext){

PessoaDTO pessoa = iterator.next();

}

é mais ou menos isso que você quer fazer???

jason_bourne

Agora consegui…fiz uma gambiarra setando no bean a partir de dados vindo do request dentro do Iterator.

Vlw

Criado 26 de junho de 2008
Ultima resposta 26 de jun. de 2008
Respostas 18
Participantes 4