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.