Bom, ontem eu quebrei cabeça o dia inteiro e não consegui descobrir proque raios isso está acontecendo.
É o seguinte, tem um método (getMesFim) que retorna um inteiro. Só que quando eu lanço ele na página, o selectOneItem não o reconhece e não seleciona o valor devolvido pelo método. Daí, quando eu converti esse método para retornar uma String, funcionou perfeitamente. Porém, outras partes do programa utilizam esses método, por isso ele deve retornar um inteiro. Pensando nisso, eu criei outro método (sMesFim) que retorna uma String. Criei a variável String sMesFim, e os métodos get e set para ela. Na págnia, ou invés de chamar o getMesFim() eu chamo o getSMesFim(). Só que com esse novo método, o JSF traz o seguinte erro:
org.apache.jasper.JasperException: javax.servlet.jsp.JspException: Error getting property 'sMesFim' from bean of type br.com.bb.sigov.atb.MData
bom, eu não queria, mas vou postar os código aki:
MData - meu bean de Data
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 MData
{
private Atb atb = new Atb();
private int mesIni;
private int mesFim;
private int ano;
private String sMesIni;
private String sMesFim;
private String sAno;
private Meses [] listaMeses = null;
private Anos [] listaAnos = null;
/** Creates a new instance of MData */
public MData()
{
ano = 2007;
mesFim = mesIni = 3;
}
public int getMesIni()
{
return mesIni;
}
public void setMesIni(int mesIni)
{
this.mesIni = mesIni;
}
public int getMesFim()
{
return mesFim;
}
public void setMesFim(int mesFim)
{
this.mesFim = mesFim;
}
public int getAno()
{
return ano;
}
public void setAno(int ano)
{
this.ano = ano;
}
public ArrayList<SelectItem> getListaMeses()
{
ArrayList<SelectItem> vlMes = new ArrayList();
if (listaMeses == null)
setListaMeses();
for (int i = 0; i< listaMeses.length;i++)
vlMes.add( new SelectItem(String.valueOf(listaMeses[i].getMM_REF()), listaMeses[i].getNM_MES() ) );
return vlMes;
}
public void setListaMeses()
{
this.listaMeses = atb.mesAtb( ano );
}
public ArrayList<SelectItem> getListaAnos()
{
if (listaAnos == null)
setListaAnos();
ArrayList<SelectItem> vtAno = new ArrayList();
for (int i = 0; i < listaAnos.length; i++)
vtAno.add( new SelectItem( String.valueOf(listaAnos[i].getAA_REF()),String.valueOf(listaAnos[i].getAA_REF()) ) );
return vtAno;
}
public void setListaAnos( )
{
this.listaAnos = atb.anoAtb();
}
public String getSMesIni()
{
return sMesIni;
}
public void setSMesIni()
{
this.sMesIni = String.valueOf(mesIni);
}
public String getSMesFim()
{
if (sMesFim == null)
setSMesFim();
return sMesFim;
}
public void setSMesFim()
{
this.sMesFim = String.valueOf(mesFim);
}
public String getSAno()
{
if (sAno == null)
setSAno();
return sAno;
}
public void setSAno()
{
this.sAno = String.valueOf(ano);
}
}
Minha página JSP:
<f:view>
<h:form id="frm">
<h:panelGrid id="opc" width="100%" columns="1">
<h:panelGroup>
<h:outputText value="Mes: "/>
<h:selectOneMenu id="sMes" value="#{MData.sMesFim}" onchange="javascript:submit()" >
<f:selectItems value="#{MData.listaMeses}"/>
</h:selectOneMenu>
<h:outputText value="Ano: "/>
<h:selectOneMenu id="sAno" value="#{MData.sAno}" onchange="javascript:submit()" >
<f:selectItems value="#{MData.listaAnos}" />
</h:selectOneMenu>
</h:panelGroup>
</h:panelGrid>
<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:outputText value="Super" /></f:facet>
<h:outputText value="#{atb.CD_PRF_DEPE_JRDT}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="Pref."/></f:facet>
<h:outputText value="#{atb.CD_PRF_DEPE}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="Dependência"/></f:facet>
<h:outputText value="#{atb.NM_DEPE}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="R. E." title="Resultado Econômico"/></f:facet>
<h:outputText value="#{atb.RESULTADO_ECONOMICO_SMT}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="E. O." title="Estratégia e Operações"/></f:facet>
<h:outputText value="#{atb.ESTRATEGIA_OPERACOES_SMT}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="Cl." title="Clientes"/></f:facet>
<h:outputText value="#{atb.CLIENTES_SMT}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="P. I." title="Processos Internos"/></f:facet>
<h:outputText value="#{atb.PROCESSOS_INTERNOS_SMT}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="C. O." title="Comportamento Organizacional"/></f:facet>
<h:outputText value="#{atb.COMPORTAMENTO_ORGANIZACIONAL_SMT}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="B. E." title="Bônus Estratégico"/></f:facet>
<h:outputText value="#{atb.BONUS_ESTRATEGICO_PTO}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="DRS" title="Sociedade"/></f:facet>
<h:outputText value="#{atb.SOCIEDADE_PTO}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="Placar" title="Placar"/></f:facet>
<h:outputText value="#{atb.TOTAL_PTO}"/>
</h:column>
</h:dataTable>
</h:panelGrid>
</h:form>
</f:view>
Meu código faces-config
<faces-config>
<navigation-rule>
<from-view-id>atbPlacar.jsp</from-view-id>
</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>
</faces-config>
Talvez, devido a algum bug do JSF, ele não estava conseguindo resolver os nomes dos set e get. Daí foi mudar o nome do getSMesFim para getsMesFim para que o JSF rodasse sem problemas