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 finallong 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>