Olá pessoal.
Estou desenvolvendo um tela de CRUD utilizando um dataTable e uma dialog. Ambos componentes do primefaces.
O problema é quando abro a dialog, insiro os valores e clico em salvar acaba que o hibernateTemplate do dao que está no MB está nulo.
Quando renderiza a tela para mostrar os valores na GRID ele funciona corretamente, mas quando tenta salvar um novo usuário ele diz estar nulo.
Seguem trechos do código:
.xhtml:<p:commandButton id="basic" value="Novo" onclick="dlg.show();"
type="button" />
<h:form id="userForm">
<p:dialog id="dialog" appendToBody="true" header="Novo - Usuário" widgetVar="dlg"
dynamic="false" modal="true" height="300" width="500"
zindex="[telefone removido]" resizable="false" closable="true">
<h:panelGrid columns="2">
<h:outputLabel value="Nome" />
<h:inputText id="nomeuser" value="#{userController.user.name}"
size="45" />
<h:outputLabel value="Email" />
<h:inputText id="emailuser" value="#{userController.user.email}"
size="45" />
<h:outputLabel value="Login" />
<h:inputText id="loginuser" value="#{userController.user.login}"
size="45" />
<h:outputLabel value="Senha" />
<h:inputText id="senhauser" value="#{userController.user.password}"
size="45" />
<h:outputText value="Perfil" />
<p:selectOneMenu value="#{userController.user.role.description}"
effect="drop">
<f:selectItem itemLabel="Usuário" itemValue="ROLE_USER" />
<f:selectItem itemLabel="Administrador" itemValue="ROLE_ADM" />
</p:selectOneMenu>
</h:panelGrid>
<br />
<center>
<p:commandButton value="Gravar" action="#{userController.save}"
update="painelConsulta" />
<p:commandButton type="reset" value="Limpar" />
</center>
</p:dialog>
<!-- Lista de usuários -->
<p:panel id="painelConsulta" header="Lista de usuários cadastrados"
style="text-align:left;width:100%;">
<me:dataTable managedBean="#{userController}"
bean="#{userController.user}" actionDelete="delete" />
</p:panel>
</h:form>
@ViewScoped
@ManagedBean
public class UserController implements DataTableObject, Serializable
{
private static final long serialVersionUID = 1L;
private User user = new User();
private List<User> listUsers = new ArrayList<User>();
private UserDAO userDAO = (UserDAO) BeanFactory.getBean("userDAO", UserDAO.class);
private List<ColumnModel> columns;
public UserController()
{
this.columns = DataTableUtils.createDynamicColumns(User.class);
this.updateScreen();
}
public List<ColumnModel> getColumns()
{
return columns;
}
/**
* Limpa os campos input e atualiza a lista de usu�rios cadastrados
*/
private void updateScreen()
{
user = new User();
listUsers = userDAO.loadAll();
}
/**
* Grava novo registro ou atualiza um registro
*/
public void save()
{
userDAO.saveOrUpdate(getUser());
updateScreen();
}
/**
* Exclui um registro da tabela usuario
*/
public void delete()
{
userDAO.delete(this.getUser());
updateScreen();
}
public List<User> getListUsers()
{
return listUsers;
}
public void setListaUsuarios(List<User> listUsers)
{
this.listUsers = listUsers;
}
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
@Override
public List<?> getTableList()
{
return this.getListUsers();
}
}
Qualquer tentativa de ajuda é bem vinda.