Gente, eu tenho um commandLink na linha aplicação. O que elel faz? Ao ser clicado, eu chama um método que processa os dados e retorna uma mensagem. O config-faces recepta essa mensgame e abre outra tela, pelo navagation-rules.
Ok, eu li que muitas pessoas tiveram o mesmo problema - o commandLink simplesmente não chama o método. Só que em todos, o bastou mudar o escopo de request para session. Só que nõ meu caso, já está em session
Bom, eu vou postar os meus códigos.
página jsp-jsf:
<f:view>
<h:form id="frm">
<h:panelGrid id="dados" headerClass="tabelaCabecalhoAzulEsquerdo" width="100%">
<h:dataTable rendered="#{! empty MPlacar.atbGeral}" value="#{MPlacar.atbGeral}" var="atb"
styleClass="tabelaCabecalhoAzulCentro"
rowClasses="FundoDestaqueBrancoCentro,FundoDestaqueAzulCentro" width="100%"
columnClasses="Centro,Centro,Esquerdo,Centro,Centro,Centro,Centro,Centro,Centro,Centro,Centro"
footerClass="tabelaRodapeAzul">
<h:column>
<f:facet name="header">
<h:commandLink action="#{MIndicador.listarIndPI}">
<h:outputText value="P. I." title="Processos Internos"/>
</h:commandLink>
</f:facet>
<h:outputText value="#{atb.PROCESSOS_INTERNOS_SMT}"/>
</h:column>
</h:dataTable>
</h:panelGrid>
</h:form>
</f:view>
O meu ManagerBean MIndicador.java
/*
* MIndicador.java
*
* Created on 4 de Julho de 2007, 11:53
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package br.com.bb.sigov.atb;
import java.lang.*;
import java.util.*;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
/**
*
* @author f9343091
*/
public class MIndicador
{
private MData mData;
private MPlacar mPlacar;
private String prsp;
private Atb atb;
private ListDataModel indicadores = null;
/** Creates a new instance of MIndicador */
public MIndicador()
{
atb = new Atb();
}
//--------------------------------------------------------------------------
private void listarIndicador(String prsp, int depe, int espd, int anoAtual, int mesIni, int mesFim)
{
ArrayList<AtbDetalheBean> ind = new ArrayList();
ind = atb.atbDetalheResultado(prsp,mPlacar.getDepe() ,mPlacar.getEspd() , mData.getAno(),mData.getMesIni(), mData.getMesIni() );
indicadores = new ListDataModel(ind);
}
public String listarIndPI()
{
listarIndicador("PROCESSOS INTERNOS", 0, mPlacar.getEspd() , mData.getAno(),mData.getMesIni(), mData.getMesIni() );
setPrsp("Processos Internos");
System.out.println("Chamou o método PI");
return "indicadores";
}
}
E o faces-config.xml
<faces-config>
<navigation-rule>
<from-view-id>atbPlacar.jsp</from-view-id>
<navigation-case>
<from-outcome>indicadores</from-outcome>
<to-view-id>indicadores.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>MData</managed-bean-name>
<managed-bean-class>br.com.bb.sigov.atb.MData</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>MPlacar</managed-bean-name>
<managed-bean-class>br.com.bb.sigov.atb.MPlacar</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>MData</property-name>
<value>#{MData}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>MIndicador</managed-bean-name>
<managed-bean-class>br.com.bb.sigov.atb.MIndicador</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>MData</property-name>
<value>#{MData}</value>
</managed-property>
<managed-property>
<property-name>MPlacar</property-name>
<value>#{MPlacar}</value>
</managed-property>
</managed-bean>
</faces-config>
pois é, alguém tem alguma idéia do porquê que esse commandLink não funciona?