[RESOLVIDO] Problema com JSF + Glassfish 4 (Action do botão executando somente uma vez)

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&ccedil;&atilde;o:" />
                    <p:inputText id="descricao" value="#{tipoReleBean.tipoRele.descricao}" required="true"
                                 requiredMessage="Descri&ccedil;&atilde;o n&atilde;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&ccedil;&atilde;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!

Consegui resolver, aparentemente o problema era por causa do update, ao dar um update no formCadastro, gerava esse comportamento, agora nao intendi o porque no tomcat isso nao acontecia. Tive que dar update nos elementos dentro do form, assim funcionou.