Tenho uma aplicação jsf utilizando primefaces em que um formulario é preenchido e submetido e gravado com sucesso
Se o formulário for acessado novamente, ele já vem preenchido com os dados do último cadastrado, quando deveria estar em branco.
Alguem poderia me ajudar…
É um cadastro de Usuários para Logar no Sistema… segue o código
package br.unemat.bbg.controller;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import br.unemat.bbg.dao.DAO;
import br.unemat.bbg.dao.UsuarioDAO;
import br.unemat.bbg.model.Usuario;
@ManagedBean
@SessionScoped
@SuppressWarnings({ "unchecked", "rawtypes" })
public class UsuarioController {
private Usuario usuario;
private DataModel listaUsuarios;
public DataModel getListarUsuarios() {
List<Usuario> lista = new UsuarioDAO().list();
listaUsuarios = new ListDataModel(lista);
return listaUsuarios;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public void prepararAdicionarUsuario(ActionEvent actionEvent) {
usuario = new Usuario();
}
public void prepararAlterarUsuario(ActionEvent actionEvent) {
usuario = (Usuario) (listaUsuarios.getRowData());
}
public String excluirUsuario() {
Usuario usuarioTemp = (Usuario) (listaUsuarios.getRowData());
DAO dao = new UsuarioDAO();
dao.remove(usuarioTemp);
return "/pages/cadastros/usuario.jsf";
}
public void adicionarUsuario(ActionEvent actionEvent) {
DAO dao = new UsuarioDAO();
dao.save(usuario);
usuario = null;
}
public void alterarUsuario(ActionEvent actionEvent) {
DAO dao = new UsuarioDAO();
dao.update(usuario);
}
}
e a pagina xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<f:loadBundle var="msgs" basename="messages" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><h:outputText value="#{msgs.SistemaLabelEstagio}" /></title>
<link type="text/css" rel="stylesheet" href="/css/estilo.css" />
</h:head>
<h:body>
<div id="main">
<f:view>
<p:layout fullPage="true">
<!-- Topo -->
<p:layoutUnit position="top" height="102" collapsible="true">
<div
style="font-family: Tahoma; text-align: right; font-size: 16pt">
<h3>
<h:outputText value="Gerenciador de Usuários" />
<!-- -->
</h3>
<h:panelGrid>
</h:panelGrid>
</div>
</p:layoutUnit>
<!-- Lado Esquerdo -->
<p:layoutUnit position="left" width="150" header="Atividades"
resizable="true" collapsible="true">
<h:form prependId="false">
<center>
<br />
<p:commandButton value="Novo" style="width:100%"
actionListener="#{usuarioController.prepararAdicionarUsuario}"
update="infosLivro" oncomplete="dlg_GerenciadorUsuario.show()"
image="ui-icon-circle-plus" />
<p:commandButton image="ui-icon-help" value="Ajuda"
onclick="dlg_Ajuda.show();" type="button" style="width:100%" />
<br /> <br />
<h:commandLink title="Voltar " action="home" immediate="true">
<h:graphicImage value="/images/voltar.png" />
</h:commandLink>
</center>
</h:form>
</p:layoutUnit>
<!-- Centro -->
<p:layoutUnit position="center">
<br />
<h:form prependId="false">
<p:dataTable id="tabela" var="usuario"
value="#{usuarioController.listarUsuarios}" paginator="true"
rows="5">
<p:column>
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{usuario.id}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{usuario.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Login" />
</f:facet>
<h:outputText value="#{usuario.login}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="E-mail" />
</f:facet>
<h:outputText value="#{usuario.email}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Telefone" />
</f:facet>
<h:outputText value="#{usuario.telefone}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Bloqueado" />
</f:facet>
<h:outputText value="#{usuario.bloqueado}" />
</p:column>
<p:column width="20%">
<f:facet name="header">
<h:outputText value="Alterar" />
</f:facet>
<p:commandButton
actionListener="#{usuarioController.prepararAlterarUsuario}"
value="Alterar" update="infoUsuario"
oncomplete="dlg_GerenciadorUsuario.show()"
image="ui-icon ui-icon-edit">
</p:commandButton>
<p:graphicImage value="/images/edit.gif" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<h:commandLink action="#{usuarioController.excluirUsuario}"
value="Excluir" />
</p:column>
</p:dataTable>
<h:panelGrid columns="2">
<p:panel header="Exportar Dados">
<h:commandLink title="PDF">
<h:graphicImage value="/images/pdf2.png" />
<p:dataExporter type="pdf" target="tabela" fileName="usuarios" />
</h:commandLink>
<h:commandLink title="Excel">
<h:graphicImage value="/images/excel.png" />
<p:dataExporter type="xls" target="tabela" fileName="usuarios" />
</h:commandLink>
</p:panel>
</h:panelGrid>
</h:form>
</p:layoutUnit>
</p:layout>
<!-- Caixas de Dialogos -->
<p:dialog header=".: Sistema - Ajuda :. " widgetVar="dlg_Ajuda"
showEffect="bounce" hideEffect="explode" height="400" width="600">
<h:outputText value="This dialog has cool effects." />
</p:dialog>
<p:dialog header="Cadastro de Usuário"
widgetVar="dlg_GerenciadorUsuario" resizable="false" modal="true"
showEffect="bounce" hideEffect="explode" width="500">
<h:form prependId="false">
<h:panelGrid id="infoUsuario" columns="1"
style="margin-bottom:10px">
<h:outputLabel for="nome" value="Nome:" />
<p:inputText id="nome" value="#{usuarioController.usuario.nome}"
required="true" />
<h:outputLabel for="login" value="Login:" />
<p:inputText id="login" value="#{usuarioController.usuario.login}" />
<h:outputLabel for="senha" value="Senha:" />
<p:growl id="msgs" showDetail="true" />
<p:password id="senha" value="#{usuarioController.usuario.senha}"
promptLabel="Digite uma senha" weakLabel="Senha Fraca"
goodLabel="Senha Razoável" strongLabel="Senha Forte" />
<h:outputLabel for="email" value="E-mail:" />
<p:inputText id="email" value="#{usuarioController.usuario.email}" />
<h:outputLabel for="telefone" value="Telefone:" />
<p:inputMask id="telefone" mask="(99)9999-9999"
value="#{usuarioController.usuario.telefone}" />
<h:outputLabel for="bloqueado" value="Bloqueado:" />
<h:selectOneMenu id="bloqueado"
value="#{usuarioController.usuario.bloqueado}">
<f:selectItem itemLabel="Sim" itemValue="S" />
<f:selectItem itemLabel="Não" itemValue="N" />
</h:selectOneMenu>
<p:commandButton update="tabela"
oncomplete="dlg_GerenciadorUsuario.hide();"
actionListener="#{usuarioController.adicionarUsuario}"
value="Salvar" image="ui-icon-disk" />
<p:commandButton update="tabela"
oncomplete="dlg_GerenciadorUsuario.hide();"
actionListener="#{usuarioController.alterarUsuario}"
value="Alterar" image="ui-icon-document" />
</h:panelGrid>
</h:form>
</p:dialog>
</f:view>
</div>
</h:body>
</html>
UsuarioDAO.java
package br.unemat.bbg.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.unemat.bbg.model.Usuario;
import br.unemat.bbg.util.HibernateUtil;
public class UsuarioDAO implements DAO<Usuario> {
@Override
public void save(Usuario usuario) throws DAOException {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
try {
session.save(usuario);
t.commit();
usuario = null;
} catch (Exception e) {
throw new DAOException(e.getMessage());
} finally {
session.close();
}
}
@SuppressWarnings("unchecked")
@Override
public List<Usuario> list() {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
try {
List<Usuario> lista = session.createQuery("from Usuario").list();
t.commit();
return lista;
} catch (Exception e) {
throw new DAOException(e.getMessage());
} finally {
session.close();
}
}
@Override
public void remove(Usuario usuario) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
try {
session.delete(usuario);
t.commit();
} catch (Exception e) {
throw new DAOException(e.getMessage());
} finally {
session.close();
}
}
@Override
public void update(Usuario usuario) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
try {
session.update(usuario);
t.commit();
} catch (Exception e) {
throw new DAOException(e.getMessage());
} finally {
session.close();
}
}
}