Boa tarde pessoal, tenho um projeto rodando no glassfish 4, com o Mojarra JSF 2.1.24 e primefaces 3.5. Na minha página de cadastro, quando clico em salvar, o backend responde certinho, porém ao tentar salvar outro registro, o botão não chama o bean e dá um refresh na página. Já tentei alterar a versão do JSF inclusive usando a nativa do glassfish. Migrei o projeto para o Tomcat e funcionou de primeira. Não sei se é algum problema do Glassfish, ou se não estou sabendo como configurar o servidor, já que é a primeira vez que utilizo o Glassfish como servidor.
Segue o código xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition template="layout.xhtml" >
<ui:define name="corpo">
<h:form id="formCadastro" prependId="false" >
<p:messages id="msgsCadastro" />
<h:inputHidden id="id" value="#{tipoReleBean.tipoRele.id}" />
<h:panelGrid columns="2" cellspacing="5">
<h:outputText value="Descrição:" />
<p:inputText id="descricao" value="#{tipoReleBean.tipoRele.descricao}" required="true"
requiredMessage="Descrição não pode ser nulo." />
</h:panelGrid>
<p:commandButton value="Salvar" icon="ui-icon-disk" actionListener="#{tipoReleBean.salvar}"
update=":formRegistro, formCadastro" />
<p:commandButton type="reset" value="Cancelar" icon="ui-icon-close" update="formCadastro"/>
<br />
<p:separator style="width: 80%; height: 2px;" />
<br />
</h:form>
<h:form id="formRegistro">
<p:dataTable widgetVar="dataTable" var="tipos" id="tblTipoReles" paginator="true"
value="#{tipoReleBean.listaTiposReles}" paginatorPosition="bottom" rowsPerPageTemplate="10">
<p:column headerText="Identificador" width="60">
<h:outputText value="#{tipos.id}" />
</p:column>
<p:column headerText="Descrição">
<h:outputText value="#{tipos.descricao}" />
</p:column>
<p:column headerText="Editar" width="50">
<p:commandButton icon="ui-icon-pencil" update=":formCadastro" >
<f:setPropertyActionListener target="#{tipoReleBean.tipoRele}" value="#{tipos}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
</html>
Esse é o código do backing bean (tentei alterar de RequestScoped pra ViewScoped, mas o problema persistiu:
package br.com.drz.app.iluminacaopublica.beans;
import br.com.drz.app.iluminacaopublica.businessRules.TipoReleBR;
import br.com.drz.app.iluminacaopublica.models.TipoRele;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
/**
*
* @author willian
*/
@ManagedBean(name = "tipoReleBean")
@ViewScoped
public class TipoReleBean implements Serializable {
private static final long serialVersionUID = 1L;
private TipoRele tipoRele;
private List<TipoRele> listaTiposReles;
public TipoReleBean() {
tipoRele = new TipoRele();
listaTiposReles = new TipoReleBR().listAll();
}
public void salvar(ActionEvent evt) {
boolean salvou = new TipoReleBR(tipoRele).persist();
if(salvou) {
listaTiposReles.add(tipoRele);
this.tipoRele = new TipoRele();
}
}
public TipoRele getTipoRele() {
return tipoRele;
}
public void setTipoRele(TipoRele tipoRele) {
this.tipoRele = tipoRele;
}
public List<TipoRele> getListaTiposReles() {
return listaTiposReles;
}
public void setListaTiposReles(List<TipoRele> listaTiposReles) {
this.listaTiposReles = listaTiposReles;
}
}
Obs.:
- Omiti os códigos da minha camada de negócios e da minha dao, pois acredito que o problema não esteja sendo originado nessas classes.
- Não gera exceção nem erro no console do navegador.
Desde já agradeço a força!