Bom dia pessoal.
Na minha pagina de cadastro de clientes, ao clicar no botão incluir, é aberto um popup para inclusão de um novo cliente. As propriedades do cadastro apontam para a propriedade “cliente” do meu bean, mas ao chamar o metodo de inclusão, a propriedade cliente está nula, não recebe o que foi digitado no popup.
xhtml:
<p:commandButton action="#{clientesBean.startInclui}" icon="ui-icon-plusthick"
process="@this" update=":formInclui" ajax="true" value="incluir" onclick="dlg1.show();">
<f:setPropertyActionListener target="#{clientesBean.empresa}" value="#{loginBean.empresa}"/>
</p:commandButton>
.....
<p:dialog dynamic="true" header="Inclusão de clientes" widgetVar="dlg1" resizable="false" modal="true" closable="false">
<h:form id="formInclui">
<div align="center">
<h:outputText style="color:red" value="* campo obrigatorio"/>
<br/>
<h:panelGrid id="panel" columns="3" cellpadding="5">
<h:outputLabel style="font-size: small" for="nome" value="nome:" />
<p:inputText required="true" style="font-size: small" value="#{clientesBean.cliente.nome}"
id="nome" label="nome" />
<h:outputText value="*" style="color:red"/>
<h:outputLabel style="font-size: small" for="tipo" value="F/J:" />
<p:selectOneMenu required="true" style="font-size: small" value="#{clientesBean.cliente.acsTipoPessoa}" id="tipo" label="tipo">
<f:selectItem itemValue="" itemLabel="--Selecione--"/>
<f:selectItems value="#{clientesBean.tipoPessoa}" var="tipo" itemLabel="#{tipo.descricao}" itemValue="#{tipo}"/>
</p:selectOneMenu>
<h:outputText value="*" style="color:red"/>
<h:outputLabel style="font-size: small" for="documento" value="CPF/CNPJ:" />
<p:inputText style="font-size: small" value="#{clientesBean.cliente.cpfCnpj}"
id="documento" label="documento" />
<h:outputText value="" style="color:red"/>
<h:outputLabel style="font-size: small" for="endereco" value="endereco:" />
<p:inputText style="font-size: small" value="#{clientesBean.cliente.endereco}"
id="endereco" label="endereco" />
<h:outputText value="" style="color:red"/>
<h:outputLabel style="font-size: small" for="numero" value="numero:" />
<p:inputText style="font-size: small" value="#{clientesBean.cliente.numero}"
id="numero" label="numero" />
<h:outputText value="" style="color:red"/>
<h:outputLabel style="font-size: small" for="complemento" value="complemento:" />
<p:inputText style="font-size: small" value="#{clientesBean.cliente.complemento}"
id="complemento" label="complemento" />
<h:outputText value="" style="color:red"/>
<h:outputLabel style="font-size: small" for="bairro" value="bairro:" />
<p:inputText style="font-size: small" value="#{clientesBean.cliente.bairro}"
id="bairro" label="bairro" />
<h:outputText value="" style="color:red"/>
<h:outputLabel style="font-size: small" for="estado" value="UF:" />
<p:selectOneMenu required="true" style="font-size: small" value="#{clientesBean.cliente.acsEstado}"
id="estado" label="estado">
<p:ajax update="cidade" process="@this" listener="#{clientesBean.atualizaCidades}"/>
<f:selectItem itemValue="#{clientesBean.empresa.acsEstado}" itemLabel="#{clientesBean.empresa.acsEstado.uf}"/>
<f:selectItems value="#{clientesBean.estados}" var="estado" itemLabel="#{estado.uf}" itemValue="#{estado}"/>
</p:selectOneMenu>
<h:outputText value="*" style="color:red"/>
<h:outputLabel style="font-size: small" for="cidade" value="cidade:" />
<p:selectOneMenu required="true" style="font-size: small" value="#{clientesBean.cliente.acsCidade}"
id="cidade" label="cidade">
<f:selectItem itemValue="#{clientesBean.empresa.acsCidade}" itemLabel="#{clientesBean.empresa.acsCidade.cidade}"/>
<f:selectItems value="#{clientesBean.cidades}" var="cidade" itemLabel="#{cidade.cidade}" itemValue="#{cidade}"/>
</p:selectOneMenu>
<h:outputText value="*" style="color:red"/>
<h:outputLabel style="font-size: small" for="ddd" value="ddd" />
<p:inputText style="font-size:small; size:9px " value="#{clientesBean.cliente.ddd}"
id="ddd" label="ddd" />
<h:outputText value="" style="text-decoration-color:red"/>
<h:outputLabel style="font-size: small" for="telefone" value="Telefone:" />
<p:inputText style="font-size:small; size:9px " value="#{clientesBean.cliente.telefone}"
id="telefone" label="telefone" />
<h:outputText value="" style="text-decoration-color:red"/>
<h:outputLabel style="font-size: small" for="observacao" value="observacao:" />
<p:inputTextarea style="font-size: small" value="#{clientesBean.cliente.observacao}"
id="observacao" label="observacao" />
<h:outputText value="" style="text-decoration-color:red"/>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton action="#{clientesBean.inclui}" id="submitButton" icon="ui-icon-disk"
value="gravar" ajax="true" process="@this"
update=":formCliente:tabelaClientes" oncomplete="dlg1.hide();">
</p:commandButton>
<p:commandButton id="cancelButton" icon="ui-icon-close" value="cancelar" ajax="true" oncomplete="dlg1.hide();">
</p:commandButton>
</h:panelGrid>
</div>
</h:form>
</p:dialog>
bean:
@ManagedBean
@RequestScoped
public class ClientesBean {
public DlvClientes cliente;
public void startInclui() {
System.out.println("ClientesBean.startInclui: ");
cliente = new DlvClientes();
cliente.setAcsEmpresa(empresa);
cliente.setAcsCidade(empresa.getAcsCidade());
cliente.setAcsEstado(empresa.getAcsEstado());
System.out.println("ClientesBean.startInclui: empresa: " + empresa.getFantasia());
System.out.println("ClientesBean.startInclui: cliente - empresa: " + cliente.getAcsEmpresa().getFantasia());
System.out.println("ClientesBean.startInclui: cliente - estado: " + empresa.getAcsEstado().getUf());
System.out.println("ClientesBean.startInclui: cliente - cidade: " + empresa.getAcsCidade().getCidade());
cidades = (List<AcsCidade>) session.createQuery("select c from AcsCidade c where c.acsEstado.idEstado = :idEstado").setInteger("idEstado", empresa.getAcsEstado().getIdEstado()).list();
}
public void inclui() {
System.out.println("ClientesBean.inclui");
System.out.println("ClientesBean.inclui - cliente: " + cliente.getNome());
System.out.println("ClientesBean.inclui - empresa: " + cliente.getAcsEmpresa().getFantasia());
System.out.println("ClientesBean.inclui - uf: " + cliente.getAcsEstado().getUf());
System.out.println("ClientesBean.inclui - cidade: " + cliente.getAcsCidade().getCidade());
session.save(cliente);
session.beginTransaction().commit();
}
Ao abrir o popup, as propriedades setadas para “cliente” no metodo startInclui() estão ok, e são printadas direitinho no log, mas ao gravar, fazendo a chamada do metodo inclui, todas as propriedades chegam nulas, até mesmo as setadas no metodo startInclui().