E ae galera,
Aparentemente é simples, mas já estou quebrando cabeça aqui para resolver. Tenho uma simples página dividida em dois forms:
-> O primeiro form é uma lista com os registros no banco e os botões CRUD.
-> O segundo form é uma ficha para inserir novos registros no banco.
Quando vou inserir um novo registro, eu chamo um dialog para preencher os dados. Esses dados estão vinculados a minha classe entidade de meu MB (controller). O problema é que quando chamo a função salvar() do meu controller, ele não preenche os atributos da entidade com os valores que estão no inputText. Já quebrei muita cabeça com isso, alguém com alguma ideia do que pode ser?
Abaixo os fontes:
Página
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
template="/resources/theme/template.xhtml">
<ui:define name="centro">
<h:form id="lista">
<p:dataTable id="tabela" var="pais" value="#{paisController.paises}">
<f:facet name="header">
<p:splitButton value="Atualizar" action="#{paisController.lista}" icon="ui-icon-refresh" update="tabela">
<p:menuitem value="Novo" icon="ui-icon-document" action="#{paisController.preparaParaAdicionar}" oncomplete="dialogFicha.show()" />
<p:menuitem value="Editar" icon="ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Apagar" icon="ui-icon-close" ajax="false" />
</p:splitButton>
</f:facet>
<p:column headerText="Código"> #{pais.id.codigo} </p:column>
<p:column headerText="Nome"> #{pais.nome} </p:column>
</p:dataTable>
</h:form>
<!-- ******************************Ficha****************************** -->
<h:form id="ficha">
<p:dialog id="dialogFicha" header="País" widgetVar="dialogFicha" resizable="false" modal="true" appendToBody="true" width="300" >
<p:panelGrid id="infosLivro" columns="2" style="margin-bottom:10px">
<h:outputLabel for="codigo" value="Código:" />
<p:inputText id="codigo" value="#{paisController.pais.id.codigo}"/>
<h:outputLabel for="filial" value="Filial:" />
<p:inputText id="filial" value="#{paisController.pais.id.filial.id.codigo}"/>
<h:outputLabel for="nome" value="Nome:" />
<p:inputText id="nome" value="#{paisController.pais.nome}"/>
<p:commandButton id="inserir" value="Inserir" oncomplete="dialogFicha.hide();" actionListener="#{paisController.adiciona}" update="ficha" />
</p:panelGrid>
</p:dialog>
</h:form>
</ui:define>
</ui:composition>
Managed Bean ou Controller
@ManagedBean
@RequestScoped
public class PaisController extends ControllerAbstract<Pais,PaisService>
{
private Pais pais = new Pais();
private List<Pais> paises = new ArrayList<Pais>();
public void lista()
{
paises = getService().getAll();
}
private void limpa()
{
pais = new Pais();
}
public void preparaParaAdicionar()
{
limpa();
}
public void adiciona()
{
getService().insert(pais);
lista();
}
public void remove()
{
getService().remove(pais);
lista();
}
public void preparaParaAlterar()
{
this.pais = getService().findById(pais.getId(),true);
}
public void altera()
{
getService().update(pais);
}
/*-------------------------------------------------------------------
* GETTERS AND SETTERS
*-------------------------------------------------------------------*/
public Pais getPais()
{
return pais;
}
public void setPais(Pais pais)
{
this.pais = pais;
}
public List<Pais> getPaises()
{
return paises;
}
public void setPaises(List<Pais> paises)
{
this.paises = paises;
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/pages/index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
</web-app>