Olá, amigos!
Estou desenvolvendo uma página JSF com combos em cascata.
Vejam meu código:
<p:selectOneMenu id="cmbCategoria" style="width: 150px" value="#{buscaMB.categoriaSelecionada}">
<f:converter binding="#{categoriaConverter}"/>
<f:selectItems value="#{buscaMB.listaCategorias}" />
<p:ajax update="cmbSubCategoria" event="change" listener="#{buscaMB.carregarSubCategorias}" />
</p:selectOneMenu>
<p:selectOneMenu id="cmbSubCategoria" style="width: 150px" value="#{buscaMB.subCategoriaSelecionada}">
<f:converter binding="#{subCategoriaConverter}"/>
<f:selectItems value="#{buscaMB.listaSubCategorias}" />
</p:selectOneMenu>
Ao selecionar uma categoria (primeiro combo) o método carregarSubCategorias do Managed Bean é executado perfeitamente, no entanto, a categoria selecionada continua null.
Segue o método do MB
public void carregarSubCategorias(AjaxBehaviorEvent event){
if(this.categoriaSelecionada == null) return;
List<SubCategoria> subCategorias = this.subCategoriaService.getSubCategorias(this.categoriaSelecionada);
this.limparListaSubCategorias();
for (SubCategoria subCategoria : subCategorias) {
this.listaSubCategorias.add(new SelectItem(subCategoria, subCategoria.getNome()));
}
}
Colocando um breakpoint no método setCategoriaSelecionada(Categoria categoriaSelecionada) percebo que ele nem é chamado.
Isso acontece com o managedBean com escopo SessionScoped e @ViewAccessScoped
Alguém consegue me ajudar?