JSF passando objeto de um MBean para outro? [Resolvido]

3 respostas
D

Olá galera, estou com o seguinte problema...

Tenho maios ou menos as seguintes classes:

public abstract class Pessoa{
  Endereco endereco;
  Contato contato;
}

public class Endereco{
}

public class Contato{
}

public class PessoaFisica extend Pessoa{
}

public class PessoaJuridica extend Pessoa{
}

Estou utilizando JSF 1.2 com Facelets.
Tenho endereco.xhtml, contato.xhtml e incluo os dois em PessoaFisica.xhtml e PessoaJuridica.xhtml.

PessoaFisicaMBean e PessoaJuridicaMBean.

Estou com a dificuldade de preencher os campos Endereco e Contato de forma genérica.
Configurei Endereco e Contato como referecedBeans, mas não estou consguindo passar e pegar os objetos Endereco e Contatos contidos em seus respectivos ManagedBeans.

Alguém pode me indicar o melhor caminho para resolver esse mapeamento em ManagedBeans?

Qualquer luz é bem vinda... Obrigado a todos.

Vlw

3 Respostas

M

Olá Diogo,

Bom basicamente, você irá lá no seu managed-bean pessoa e seta seus outros managedbeans como? Assim:

<managed-property> <property-name>endereco</property-name> <value>#{endereco}</value> </managed-property>

onde #{endereco} é o outro managed-bean.

:okok:

D

“marcossousa”:
Olá Diogo,

Bom basicamente, você irá lá no seu managed-bean pessoa e seta seus outros managedbeans como? Assim:

<managed-property> <property-name>endereco</property-name> <value>#{endereco}</value> </managed-property>

onde #{endereco} é o outro managed-bean.

:okok:

Obrigado pela ajuda Marcos, mas eu já tinha pensado numa solução parecida.

Porém não me foi muito útil porque no momento de carregar um objeto do DB, ele é instanciado em pessoaFisicaMBean.endereco e pessoaJuridicaMBean.endereco e nesse mapeamento sempre que salvar ou atualizar ele vai substituir pelo conteúdo de #{endereco}.

Teria que fazer o contrário:

No momento que instanciar o objeto pessoaFisicaMBean ou pessoaJuridicaMBean, deveria atribuir o objeto endereco em #{endereco}.

para isso estou tentando utilizar:

<f:param value="#{pessoaFisicaMBean.endereco}"  name="#{endereco}"/>

em pessoaFisica.xhtml. Mas não está funcionando.

Lembrando, estou utilizando facelets.

Valew

D

Rolvi de forma muito simples:

em pessoaFisica.xhtml e pessoaJuridica.xhtml

<c:set var="endereco" value="${pessoaFisicaMBean.endereco}"/> <ui:include src="/templates/endereco.xhtml"/>

Criado 13 de julho de 2007
Ultima resposta 15 de jul. de 2007
Respostas 3
Participantes 2