Olá pessoal, gostaria de saber se alguém já passou por isso…
Tenho um datatable que traz os dados da tabela Usuário no banco… tenho um commandlink “Alterar” que quando clicado, abre um dialog com um formulário com os campos para poder alterar os dados do usuário, e depois de confirmado, o sistema volta pra tela mostrando o datatable com os dados já atualizado.
Pois bem, essa ação funciona perfeitamente… depois de confirmado, o dialog fecha e mostra o datatable atualizado. Porém se dou um reload na página, ou vou para outra página e volto nela, ele me mostra o datatable com os dados antigos (mas no banco de dados está OK - alterado). Se eu reiniciar o servidor, dai sim ele mostra os dados corretos…
Não sei o que fazer para corrigir isso… se alguém puder me dar uma luz…
.xhtml
<h:form id="form">
<p:growl life="5000" autoUpdate="true" />
<div class="titulo">BUSCA DE USUÁRIOS</div>
<p:dataTable emptyMessage="Nenhum usuário encontrado" value="#{usuarioBean.lista}" var="user" paginator="true" rows="10" style="text-align: center">
<p:column style="width: 100px">
<p:commandLink action="#{usuarioBean.setSelecionado(user)}" process="@this" update=":form:grid" title="Alterar" onclick="dlg_alterar.show()">
<h:graphicImage value="/resources/images/edit.png" />
</p:commandLink>
</p:column>
<p:column headerText="Nome" filterBy="#{user.nome}" filterMatchMode="contains">
#{user.nome}
</p:column>
<p:column headerText="CPF" filterBy="#{user.cpf}" filterMatchMode="contains">
#{user.cpf}
</p:column>
<p:column headerText="Telefone (1)" filterBy="#{user.fone1}" filterMatchMode="contains">
#{user.fone1}
</p:column>
</p:dataTable>
<p:dialog header="Alterar dados Cadastrais" resizable="false" modal="true" id="altuser" widgetVar="dlg_alterar">
<h:panelGrid id="grid" columns="2" cellpadding="5" style="text-align: right">
//FORMULÁRIO..
<p:commandButton value="Alterar" action="#{usuarioBean.salvar()}" update="@form" title="Alterar" icon="ui-icon-check"/>
</h:panelGrid>
</p:dialog>
</div>
</h:form>
bean
@ManagedBean
@ViewScoped
public class UsuarioBean implements Serializable{
private static final long serialVersionUID = -8236707856924581733L;
@ManagedProperty(value="#{entityManagerBuilder.entityManager}")
private EntityManager entityManager;
private Usuario selecionado;
private List<Usuario> lista;
public void salvar() {
FacesContext context = FacesContext.getCurrentInstance();
try {
getEntityManager().getTransaction().begin();
if (getSelecionado().getCod_usuario() == null) {
getEntityManager().persist(selecionado);
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Cadastrado realizado com Sucesso!", ""));
}else{
getEntityManager().merge(selecionado);
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Cadastrado alterado com Sucesso!", ""));
listar_usuario();
}
getEntityManager().getTransaction().commit();
selecionado = null;
} catch (Exception e) {
}
}
public void listar_usuario(){
Query query = getEntityManager().createQuery("from Usuario");
lista = query.getResultList();
}
//GETTERS E SETTERS
public Usuario getSelecionado() {
if(selecionado == null){
selecionado = new Usuario();
}
return selecionado;
}
public void setSelecionado(Usuario selecionado) {
this.selecionado = selecionado;
}
public List<Usuario> getLista() {
if(lista == null){
listar_usuario();
}
return lista;
}
Agradeço desde já!!
