JSF+passagem de parâmetro

Pessoal estou tentando passar um parâmetro para o servidor para que possa captura-lo na minha classe que implemente PhaseListener, porem o parâmetro não esta chegando, abaixo segue o código:


<?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:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <h:outputScript name="jquery.js" library="js" target="head"/> 
    </h:head>
    <h:body>
        <ui:composition template="/WEB-INF/template.xhtml">

            <ui:define name="conteudoPrincipal">
                <!-- Formulário para exibição dos dados-->
                <h:form id="formFabricantes">
                    <p:growl id="growl" showDetail="true"/> 
                    
                    <f:param name="chud" value="true"/>
                   
                    <p:dataTable id="tableFabricantes" var="fabricante" value="#{gerenciamentoFabMB.fabricantes}"
                                 paginator="true" rows="10"
                                 rowKey="#{fabricante.idFabricante}"
                                 selection="#{gerenciamentoFabMB.fabricante}"
                                 selectionMode="single"
                                 paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                 rowsPerPageTemplate="5,10,15"
                                 paginatorPosition="bottom">
                        <p:ajax event="rowSelect" update=":formFabricantes:btnEditar :formFabricantes:btnExcluir :formFabricantes:btnVisualizar" listener="#{gerenciamentoFabMB.onRowSelect}"/>
                        <f:facet name="header">
                            Fabricantes
                        </f:facet>
                        <p:column headerText="Id" rendered="false">
                            #{fabricante.idFabricante}
                        </p:column>
                        <p:column headerText="Nome">
                            #{fabricante.nome}
                        </p:column>
                        <p:column headerText="Telefone">
                            #{fabricante.telefone}
                        </p:column>
                        <p:column headerText="Email">
                            #{fabricante.email}
                        </p:column>
                    </p:dataTable>

                    <p:separator/>
                    <p:commandButton id="btnCadastrar" value="Cadastrar" disabled="false" oncomplete="dlgCadFab.show();"/>
                    <p:commandButton id="btnEditar" value="Editar" disabled="#{gerenciamentoFabMB.btnEditar}" update=":formEditFab:dialogEditFab" oncomplete="dlgEditFab.show();"/>
                    <p:commandButton id="btnExcluir" value="Excluir" disabled="#{gerenciamentoFabMB.btnExluir}" update=":formExcluirFab:confirmDialogExluirFab" oncomplete="confirExclusaoFab.show();"/>
                    <p:commandButton id="btnVisualizar" value="Visualizar" disabled="#{gerenciamentoFabMB.btnVisualizar}" update=":formVisualizarFab:pngVisualizar" oncomplete="dlgVisuFab.show();"/>
                </h:form>

                <!-- Formulário onde o usuário podera visualizar os detalhes de um determinado 
                fabricante-->
                <h:form id="formVisualizarFab">
                    <p:dialog header="Visualizar Detalhes do Fabricante" widgetVar="dlgVisuFab" resizable="false" id="dialogVisuFab" modal="true">
                        <h:panelGrid id="pngVisualizar" columns="2" cellpadding="4" >
                            <h:outputLabel value="Nome:"/>
                            <p:inputText value="#{gerenciamentoFabMB.fabricante.nome}" disabled="true" style="width: 200px;"/>
                            <h:outputLabel value="Telefone:"/>
                            <p:inputMask value="#{gerenciamentoFabMB.fabricante.telefone}" disabled="true" mask="(99) 9999-9999" style="width: 200px;"/>
                            <h:outputLabel value="Email:"/>
                            <p:inputText value="#{gerenciamentoFabMB.fabricante.email}" disabled="true" style="width: 200px;"/>
                        </h:panelGrid>
                        <p:separator/>
                        <p:commandButton value="Ok" disabled="true" update=":formFabricantes:btnEditar :formFabricantes:btnExcluir :formFabricantes:btnVisualizar"/>
                        <p:commandButton value="Cancelar" onclick="dlgVisuFab.hide();"/>
                    </p:dialog>
                </h:form>
                <!-- Formulário onde o usuário poderá visualizar os detalhes de um determinado 
                fabricante-->
                <h:form id="formCadastrarFab">
                    <p:dialog header="Cadastrar Fabricante" widgetVar="dlgCadFab" resizable="false" id="dialogCadFab" modal="true">
                        <h:panelGrid id="pngCadastrar" columns="2" cellpadding="4" >
                            <h:outputLabel value="Nome:"/>
                            <p:inputText value="#{gerenciamentoFabMB.fabricante.nome}" required="true" style="width: 200px;"/>
                            <h:outputLabel value="Telefone:"/>
                            <p:inputMask value="#{gerenciamentoFabMB.fabricante.telefone}" mask="(99)9999-9999" converter="convertInputTel" style="width: 200px;"/>
                            <h:outputLabel value="Email:"/>
                            <p:inputText value="#{gerenciamentoFabMB.fabricante.email}" style="width: 200px;"/>
                        </h:panelGrid>
                        <p:separator/>
                        <p:commandButton value="OK" actionListener="#{gerenciamentoFabMB.salvar}" update=":formFabricantes:tableFabricantes :formFabricantes:growl :formFabricantes:btnEditar :formFabricantes:btnExcluir :formFabricantes:btnVisualizar :formCadastrarFab:dialogCadFab" oncomplete="dlgCadFab.hide();"/>
                        <p:commandButton value="Cancelar" onclick="dlgCadFab.hide();"/>
                    </p:dialog>
                </h:form>

                <!-- Formulário onde o usuário podera editar os detalhes de um determinado 
                fabricante-->
                <h:form id="formEditFab">
                    <p:dialog header="Editar Fabricante" widgetVar="dlgEditFab" resizable="false" id="dialogEditFab" modal="true">
                        <h:inputHidden value="#{gerenciamentoFabMB.fabricante.idFabricante}" id="idFab"/>
                        <h:panelGrid id="pngEdit" columns="2" cellpadding="4" >
                            <h:outputLabel value="Nome:"/> 
                            <p:inputText value="#{gerenciamentoFabMB.fabricante.nome}" style="width: 200px;"/>
                            <h:outputLabel value="Telefone:"/>
                            <p:inputMask value="#{gerenciamentoFabMB.fabricante.telefone}" mask="(99)9999-9999" converter="convertInputTel" style="width: 200px;"/>
                            <h:outputLabel value="Email:"/>
                            <p:inputText value="#{gerenciamentoFabMB.fabricante.email}" style="width: 200px;"/>
                        </h:panelGrid>
                        <p:separator/>
                        <p:commandButton value="OK" actionListener="#{gerenciamentoFabMB.editaFabricante}" update=":formFabricantes:tableFabricantes :formFabricantes:growl :formFabricantes:btnEditar :formFabricantes:btnExcluir :formFabricantes:btnVisualizar :formEditFab:dialogEditFab" oncomplete="dlgEditFab.hide();"/>
                        <p:commandButton value="Cancelar" onclick="dlgEditFab.hide();"/>
                    </p:dialog>
                </h:form>
                <!-- Dialog para confirmação de exclusão de um determindo fabricante -->
                <h:form id="formExcluirFab"> 

                    <p:confirmDialog id="confirmDialogExluirFab" message="Deseja realmente excluir o fabricante selecionado?"  
                                     header="Excluir Fabricante" severity="alert" widgetVar="confirExclusaoFab">  
                        <h:inputHidden value="#{gerenciamentoFabMB.fabricante.idFabricante}"/>
                        <p:commandButton id="confirm" value="Sim" update=":formFabricantes:tableFabricantes :formFabricantes:btnEditar :formFabricantes:btnExcluir :formFabricantes:btnVisualizar :formFabricantes:growl" oncomplete="confirExclusaoFab.hide();"  
                                         actionListener="#{gerenciamentoFabMB.excluirFabricante(gerenciamentoFabMB.fabricante.idFabricante)}" />  
                        <p:commandButton id="decline" value="Não" onclick="confirExclusaoFab.hide();" type="button" />   

                    </p:confirmDialog>  
                </h:form>
            </ui:define>
        </ui:composition>

    </h:body>

</html>

Meu PhaseListener:

[code]public class PhaseListener implements javax.faces.event.PhaseListener {

@Override
public void beforePhase(PhaseEvent event) {
    System.out.println("Antes fase...." + event.getPhaseId());
    if (event.getPhaseId().equals(PhaseId.RESTORE_VIEW)) {
        System.out.println("É uma operação crud: " + FacesContextUtil.isOperacaoCrud());
        if (FacesContextUtil.isOperacaoCrud() == Boolean.TRUE) {
            Session session = HibernateSessionFactory.getSession();
            session.beginTransaction();
            FacesContextUtil.setRequestSession(session);
        }
    }
}

@Override
public void afterPhase(PhaseEvent event) {
    System.out.println("Depois fase...." + event.getPhaseId());
    if (event.getPhaseId().equals(PhaseId.RENDER_RESPONSE) && FacesContextUtil.isOperacaoCrud()) {
        Session session = FacesContextUtil.getResquestSession();
        try {
            session.getTransaction().commit();
        } catch (HibernateException ex) {
            System.out.println("Falha a commitar a transação. Erro: " + ex);
            if (session.getTransaction().isActive()) {
                session.getTransaction().rollback();
            }
        } finally {
            session.close();
        }
    }
}

@Override
public PhaseId getPhaseId() {
    return PhaseId.ANY_PHASE;
}

}
[/code]

Meu FacesCOntextUtil:

[code]
public class FacesContextUtil {

private static final String HIBERNATE_SESSION = "hibernate_session";
private static final String OPERACAO_CRUD = "crud";

public static void setRequestSession(Session session) {
    FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put(HIBERNATE_SESSION, session);
}

public static Session getResquestSession() {
    return (Session) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get(HIBERNATE_SESSION);
}

public static Boolean isOperacaoCrud() {
    return Boolean.valueOf(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(OPERACAO_CRUD));
}

}[/code]

e meu faces-config:

<faces-config version="2.1"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">

    <navigation-rule>
        <from-view-id>/paginas/principal/principal.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>cadastroFabricantes</from-outcome>
            <to-view-id>/paginas/cadastros/cadastroFabricantes.jsf</to-view-id>
        </navigation-case>
    </navigation-rule>
    
    <lifecycle>
        <phase-listener>com.scer.controller.PhaseListener</phase-listener>
    </lifecycle>
</faces-config>

Quero que quando abrir qualquer tela que acesse o banco de dados, quero enviar p parâmetro “crud”, para que possa recupera-lo no meu PhaseListener e somente abrir uma sessão com o banco de dados se necessário.

Ninguem?

Srmachado, espero estar falando besteira… mas verifique a linha onde set o parâmetro e o mesmo esperado:

<f:param name="chud" value="true"/>

veja que esta com “ch” e o correto não seria “cr”.

o unico problema que identifiquei blza…