Ola pessoal, Estou tentando editar o objeto Fornecedor que possui a classe Endereço, consigo selecionar/buscar os dados mas não inserir os dados no selectOneMenu, que são Cidade e Estado, sendo que cidade esta dentro de Endereco.
Como preencher os selectOneMenu com com os objeto selecionado?
<p:dialog header="Cadastro de Fornecedores" widgetVar="dialogo"
closeOnEscape="true" draggable="false" resizable="false"
modal="true" closable="true" showEffect="fade" appendTo="@(body)"
showHeader="fade">
<h:form id="formCadastro">
<h:panelGrid columns="2">
<p:outputLabel for="codigo" value="Código:" />
<p:inputText id="codigo"
value="#{fornecedorBean.fornecedor.codigo}"
placeholder="preenchimento automático!" readonly="true" size="23" />
<p:outputLabel for="razaoSocial" value="Razão Social:" />
<p:inputText id="razaoSocial"
value="#{fornecedorBean.fornecedor.razaoSocial}" maxlength="60"
size="55" />
<p:outputLabel for="nomeFantasia" value="Nome Fantasia:" />
<p:inputText id="nomeFantasia"
value="#{fornecedorBean.fornecedor.nomeFantasia}" maxlength="60"
size="55" />
<p:outputLabel for="responsavelLegal" value="Responsável Legal:" />
<p:inputText id="responsavelLegal"
value="#{fornecedorBean.fornecedor.responsavelLegal}"
maxlength="60" size="55" />
<p:outputLabel value="E-mail" />
<p:inputText value="#{fornecedorBean.fornecedor.email}"
maxlength="60" size="50" />
<p:separator />
<p:separator />
<p:outputLabel value="Logradouro:" />
<p:inputText value="#{fornecedorBean.endereco.rua}"
maxlength="60" size="55" />
<p:outputLabel value="Estado:" />
<p:selectOneMenu id="estado" filter="true"
converter="omnifaces.SelectItemsConverter"
value="#{fornecedorBean.estado}">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um estado" />
<f:selectItems value="#{fornecedorBean.estados}" var="estado"
itemValue="#{estado}" itemLabel="#{estado.nome}" />
<p:ajax listener="#{fornecedorBean.popular}"
update=":formCadastro:cidade" />
</p:selectOneMenu>
<p:outputLabel for="cidade" value="Cidade:" />
<p:selectOneMenu id="cidade" filter="true" required="true"
requiredMessage="O campo 'Cidade' é obrigatório"
converter="omnifaces.SelectItemsConverter"
value="#{fornecedorBean.endereco.cidade}">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione uma cidade" />
<f:selectItems value="#{fornecedorBean.cidades}" var="cidade"
itemValue="#{cidade}" itemLabel="#{cidade.nome}" />
</p:selectOneMenu>
</h:panelGrid>
<center>
<h:panelGrid columns="2">
<p:commandButton value="Salvar"
actionListener="#{fornecedorBean.salvar}"
oncomplete="PF('dialogo').hide();"
update=":formListagem:tabela">
</p:commandButton>
<p:commandButton value="Fechar"
oncomplete="PF('dialogo').hide();" />
</h:panelGrid>
</center>
</h:form>
</p:dialog>`
FornecedorBean
public void editar(ActionEvent evento) {
try {
fornecedor = (Fornecedor)evento.getComponent().getAttributes().get("fornecedorSelecionado"); EnderecoDAO enderecoDAO = new EnderecoDAO();
endereco= enderecoDAO.buscar(fornecedor.getCodigo());
fornecedor.setEndereco(endereco);
endereco.setCidade(endereco.getCidade());
…
EmpresaDomain
@MappedSuperclass
public class Empresa extends GenericDomain {
private static final long serialVersionUID = 1L;
@Column(name="razao_social", length = 60, nullable = false)
private String razaoSocial;
@Column(name="nome_fantasia", length = 60, nullable = false)
private String nomeFantasia;
@ManyToOne
@JoinColumn(nullable = true)
private Endereco endereco;`
FornecedorDomain
public class Fornecedor extends Empresa {
@Column(name="responsavel_legal", length = 60, nullable = false)
private String responsavelLegal;