Pessoal,
Estou utilizando JPA e tenho 3 selectOneMenu, e quero preencher a 2 de acordo com o valor selecionado na 1 e a 3 de acordo com os valores selecionados na 1 e na 2.
Acontece que quandi seleciono a 1 a 2 é oreenchida com todos valores e não filtra a condição da 1.
<p:outputLabel for=“nivel1” value=“Nível 1:” />
<p:selectOneMenu id=“nivel1” value="#{dtRelatoriosAvlMB.nivel1}“
style=“width:50px”>
<f:selectItem itemLabel=“N 1” itemValue=”“
noSelectionOption=“true” />
<f:selectItems value=”#{dtRelatoriosAvlMB.listaNvl1}" var=“ln1"
itemLabel=”#{ln1.CD_TIP_EVT_PDA_NVL1}“
itemValue=”#{ln1.CD_TIP_EVT_PDA_NVL1}" />
<p:ajax event=“change"
listener=”#{dtRelatoriosAvlMB.acaoComboNivel1}“
update=”:form:nivel2" />
</p:selectOneMenu>
<p:outputLabel for="nivel2" value="Nível 2:" />
<p:selectOneMenu id="nivel2" value="#{dtRelatoriosAvlMB.nivel2}"
style="width:50px">
<f:selectItem itemLabel="N 1" itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{dtRelatoriosAvlMB.listaNvl2}" var="ln2"
itemLabel="#{ln2.CD_TIP_EVT_PDA_NVL2}"
itemValue="#{ln2.CD_TIP_EVT_PDA_NVL2}" />
<p:ajax event="change"
listener="#{dtRelatoriosAvlMB.acaoComboNivel2}"
update=":form:nivel3" />
</p:selectOneMenu>
<p:outputLabel for="nivel3" value="Nível 3:" />
<p:selectOneMenu id="nivel3" value="#{dtRelatoriosAvlMB.nivel3}"
style="width:50px">
<f:selectItem itemLabel="N 3" itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{rdtRelatoriosAvlMB.listaNvl3}" var="ln3"
itemLabel="#{ln3.CD_TIP_EVT_PDA_NVL3}"
itemValue="#{ln3.CD_TIP_EVT_PDA_NVL3}" />
</p:selectOneMenu>
public class RelatoriosAvlMB extends AbstractMB implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private List<RelatoriosAvl> lista;
private List<RelatoriosAvl> listaFiltrada;
private List<RelatoriosAvl> listaNvl1;
private List<RelatoriosAvl> listaNvl2;
private List<RelatoriosAvl> listaNvl3;
private Integer nivel1;
private Integer nivel2;
private Integer nivel3;
// Acção da combo nivel1
public void acaoComboNivel1() {
if (nivel1 != null) {
System.out.println("nivel1 não está nulo: "+nivel1);
atualizarListaNivel2(nivel1);
}else{
System.out.println("nivel1 está nulo: "+nivel1);
}
}
// Acção da combo nivel2
public void acaoComboNivel2() {
if (nivel1 != null) {
System.out.println("nivel2 não está nulo: " +nivel1+ " - " + nivel2);
atualizarListaNivel3(nivel1, nivel2, null);
}else{
System.out.println("nivel2 está nulo: "+nivel1+ " - " + nivel2);
}
}
// Atualiza lista
public void atualizarLista() {
lista = new RelatoriosAvlFacade().buscarRelatoriosAvl();
}
// Atualiza lista nível 1
public void atualizarListaNivel1() {
listaNvl1 = new RelatoriosAvlFacade().buscarRelatoriosAvlNivel1();
}
// Atualiza lista nível 2
public void atualizarListaNivel2(Integer nivel1) {
listaNvl2 = new RelatoriosAvlFacade().buscarRelatoriosAvlNivel2(nivel1);
}
// Atualiza lista nível 3
public void atualizarListaNivel3(Integer nivel1, Integer nivel2,
Integer nivel3) {
System.out.println("variávesi chegaram: "+nivel1+ " - " + nivel2);
listaNvl3 = new RelatoriosAvlFacade().buscarRelatoriosAvlNivel3(nivel1,
nivel2, nivel3);
}
// Atualiza tabela
public void atualizarTaabelaPosFiltros(Integer nivel1, Integer nivel2,
Integer nivel3) {
listaFiltrada = new RelatoriosAvlFacade().buscarRelatoriosAvlFiltros(nivel1, nivel2, nivel3);
}
// \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\/
public List<RelatoriosAvl> getLista() {
if (lista == null) {
atualizarLista();
}
return lista;
}
public void setLista(List<RelatoriosAvl> lista) {
this.lista = lista;
}
public List<RelatoriosAvl> getListaNvl1() {
if (listaNvl1 == null) {
atualizarListaNivel1();
}
return listaNvl1;
}
public void setListaNvl1(List<RelatoriosAvl> listaNvl1) {
this.listaNvl1 = listaNvl1;
}
public List<RelatoriosAvl> getListaNvl2() {
atualizarListaNivel2(nivel1);
return listaNvl2;
}
public void setListaNvl2(List<RelatoriosAvl> listaNvl2) {
this.listaNvl2 = listaNvl2;
}
public List<RelatoriosAvl> getListaNvl3() {
// if (listaNvl3 == null) {
// atualizarListaNivel3(nivel1, nivel2, nivel3);
// }
atualizarListaNivel3(nivel1, nivel2, nivel3);
return listaNvl3;
}
public void setListaNvl3(List<RelatoriosAvl> listaNvl3) {
this.listaNvl3 = listaNvl3;
}
public List<RelatoriosAvl> getListaFiltrada() {
return listaFiltrada;
}
public void setListaFiltrada(List<RelatoriosAvl> listaFiltrada) {
this.listaFiltrada = listaFiltrada;
}
public Integer getNivel1() {
return nivel1;
}
public void setNivel1(Integer nivel1) {
this.nivel1 = nivel1;
}
public Integer getNivel2() {
return nivel2;
}
public void setNivel2(Integer nivel2) {
this.nivel2 = nivel2;
}
public Integer getNivel3() {
return nivel3;
}
public void setNivel3(Integer nivel3) {
this.nivel3 = nivel3;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
@SuppressWarnings(“unchecked”)
public List buscarRelatoriosAvlNivel2(Integer nivel1) {
session.beginTransaction();
Criteria c = getSession().createCriteria(RelatoriosAvl.class);
if (nivel1 != null)
c.add(Restrictions.ge("CD_TIP_EVT_PDA_NVL1", nivel1));
ProjectionList list = Projections.projectionList();
list.add(Projections.groupProperty("CD_TIP_EVT_PDA_NVL2"),
"CD_TIP_EVT_PDA_NVL2");
c.setProjection(list);
c.setResultTransformer(Transformers.aliasToBean(RelatoriosAvl.class));
c.addOrder(Order.asc("CD_TIP_EVT_PDA_NVL2"));
return c.list();
}
@SuppressWarnings("unchecked")
public List<RelatoriosAvl> buscarRelatoriosAvlNivel3(Integer nivel1,
Integer nivel2) {
session.beginTransaction();
Criteria c = getSession().createCriteria(RelatoriosAvl.class);
if (nivel1 != null)
c.add(Restrictions.ge("CD_TIP_EVT_PDA_NVL1", nivel1));
if (nivel2 != null)
c.add(Restrictions.ge("CD_TIP_EVT_PDA_NVL2", nivel2));
ProjectionList list = Projections.projectionList();
list.add(Projections.groupProperty("CD_TIP_EVT_PDA_NVL3"),
"CD_TIP_EVT_PDA_NVL3");
c.setProjection(list);
c.setResultTransformer(Transformers.aliasToBean(RelatoriosAvl.class));
c.addOrder(Order.asc("CD_TIP_EVT_PDA_NVL3"));
return c.list();
}