Bom dia pessoal.
Estou com um problemão. Tenho uma tabela que entre seus atibutos tem uma coluna ano e outra mês. No meu formulário xhtml eu tenho dois selectOneMenu, um para ano e outro para mê. O probema começa aqui. Eu quero selecionar o ano e preciso que o selectOneMenu seja preenchido apenas com os meses que são daquelça ano na tabela.
E depois de selecionar o mês eu preciso que seja gerado uma lista com os dados da tabela contemplados pelo filtros ano e mês.
O selectOneMenu ano eu sonsigo preenceher, porém o selectOneMenu mês eu preciso passar o parâmetro ano para o método que gera s lista de meses, e aqui esta o segundo e maior problema. Já tentei de tudo, li vários artigos e posts e não consegui sair do lugar.
package br.com.bb.uro.painelDeRisco.MB;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.List;
import javax.faces.event.ValueChangeEvent;
import org.hibernate.Session;
import br.com.bb.uro.painelDeRisco.auxiliar.DataAtual;
import br.com.bb.uro.painelDeRisco.facade.PerdaProcessoFacade;
import br.com.bb.uro.painelDeRisco.modelo.PerdaProcesso;
/**
*
-
@author F8907199
-
@version 1.0 12/12/2015
*/
@javax.faces.bean.ManagedBean
@javax.faces.bean.SessionScoped
public class PerdaProcessoMB extends AbstractMB implements Serializable {/**
*
*/
private static final long serialVersionUID = 1L;private List listaAnoMes;
private List listaNvl1;
private List listaNvl2;
private List listaNvl3;private List listaMes;
private List listaAno;private PerdaProcesso objNvl1;
private PerdaProcesso objNvl2;private PerdaProcesso objAno;
private PerdaProcesso objMes;
private PerdaProcesso objAnoMes;public Integer eventoAno(ValueChangeEvent event) {
return (Integer) event.getNewValue();
}
public void eventoMes(ValueChangeEvent event) {
event.getNewValue();
event.getOldValue();
}// Atualiza lista MesAno
public void atualizarListaAnoMes() {
DataAtual d = new DataAtual();
listaAnoMes = new PerdaProcessoFacade().buscarProcessosAnoMes(d
.AnoMesUltimosDozeMeses());
}public List getListaAnoMes() {
if (listaAnoMes == null && getFunciBb() != null) {
atualizarListaAnoMes();
}
return listaAnoMes;
}public void setListaAnoMes(List listaAnoMes) {
this.listaAnoMes = listaAnoMes;
}// Atualiza lista nível 1
public void atualizarListaNvl1() {
DataAtual d = new DataAtual();
System.out.println("atualizarListaNvl1 " + d.AnoMesUltimosDozeMeses());
listaNvl1 = new PerdaProcessoFacade().buscarProcessosNvl1(null, null,
d.AnoMesUltimosDozeMeses());
}// Atualiza lista nível 2
public void atualizarListaNvl2() {
DataAtual d = new DataAtual();
System.out.println("atualizarListaNvl2 " + d.AnoMesUltimosDozeMeses());
listaNvl2 = new PerdaProcessoFacade().buscarProcessosNvl2(
objNvl1.getProcessoNivel1(), null, null,
d.AnoMesUltimosDozeMeses());
}// Atualiza lista nível 3
public void atualizarListaNvl3() {
DataAtual d = new DataAtual();
System.out.println("atualizarListaNvl3 " + d.AnoMesUltimosDozeMeses());
listaNvl3 = new PerdaProcessoFacade().buscarProcessosNvl3(
objNvl2.getProcessoNivel2(), null, null,
d.AnoMesUltimosDozeMeses());
}public List getListaNvl1() {
if (listaNvl1 == null && getFunciBb() != null) {
atualizarListaNvl1();
}
return listaNvl1;
}public void setListaNvl1(List listaNvl1) {
this.listaNvl1 = listaNvl1;
}public static long getSerialversionuid() {
return serialVersionUID;
}public List getListaNvl2() {
return listaNvl2;
}public void setListaNvl2(List listaNvl2) {
this.listaNvl2 = listaNvl2;
}public List getListaNvl3() {
return listaNvl3;
}public void setListaNvl3(List listaNvl3) {
this.listaNvl3 = listaNvl3;
}public PerdaProcesso getObjNvl1() {
return objNvl1;
}public void setObjNvl1(PerdaProcesso objNvl1) {
this.objNvl1 = objNvl1;
}public PerdaProcesso getObjNvl2() {
return objNvl2;
}public void setObjNvl2(PerdaProcesso objNvl2) {
this.objNvl2 = objNvl2;
}public PerdaProcesso getObjAnoMes() {
return objAnoMes;
}public void setObjAnoMes(PerdaProcesso objAnoMes) {
this.objAnoMes = objAnoMes;
}/** Listas Ano e Mes------------------------------------------------ */
public void atualizarListaAno() {
listaAno = new PerdaProcessoFacade().buscarAno();
}public void atualizarListaMes(Integer ano) {
listaMes = new PerdaProcessoFacade().buscarMes(null);
}public List getListaAno() {
if (listaAno == null) {
atualizarListaAno();
}
return listaAno;
}public void setListaAno(List listaAno) {
this.listaAno = listaAno;
}
** public List getListaMes() {**
** if (listaMes == null) {**
** atualizarListaMes(ano);**
** }**
** return listaMes;**
** }**
public void setListaMes(List<PerdaProcesso> listaMes) {
this.listaMes = listaMes;
}
public PerdaProcesso getObjAno() {
return objAno;
}
public void setObjAno(PerdaProcesso objAno) {
this.objAno = objAno;
}
public PerdaProcesso getObjMes() {
return objMes;
}
public void setObjMes(PerdaProcesso objMes) {
this.objMes = objMes;
}
}
<h:panelGrid columns=“2”>
<h:panelGrid>
<p:outputLabel for="ano" value="Ano" />
<p:selectOneMenu binding="comboAno" id="ano" value="#{perdaProcessoMB.listaAno}" valueChangeListener="#{perdaProcessoMB.eventoAno}" immediate="true">
<f:selectItem itemLabel="selecione" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{perdaProcessoMB.listaAno}" var="la" itemLabel="#{la.ano}" itemValue="#{la.ano}" />
<p:ajax event="change" listener="#{perdaProcessoMB.listaMes}" update=":form:mes" />
</p:selectOneMenu>
</h:panelGrid>
<h:panelGrid>
<p:outputLabel for="mes" value="Mes" />
<p:selectOneMenu binding="comboMes" id="mes" value="#{perdaProcessoMB.listaMes}" valueChangeListener="#{perdaProcessoMB.eventoMes" immediate="true">
<f:selectItem itemLabel="selecione" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{perdaProcessoMB.listaMes}" var="lm" itemLabel="#{lm.mes}" itemValue="#{lm.mes}" />
</p:selectOneMenu>
</h:panelGrid>
</h:panelGrid>