<p:selectonemenu>所选值始终为null </p:selectonemenu>

时间:2013-09-04 13:14:35

标签: java spring jsf primefaces

我的目标是获取Sistema类型的选定值,这样我就可以更新数据表和另一个SelectOneMenu。

每当选择一个值时,ajax标记行为正确,并调用configura(),但是我的sistemaSelecionado(它是Bean中的一个对象)总是返回null作为我的Backing Bean。

转换器在另一个具有相同类Sistema的页面中正常工作。但它不会触发此特定页面。

这是xhtml页面

<div>
    <p:outputLabel title="Sistema"></p:outputLabel>
</div>
<div>
    <p:selectOneMenu id="selectOneMenu"
        value="#{permissaoListBean.sistemaSelecionado}"
        converter="entityConverter">
        <p:ajax event="change" listener="#{permissaoListBean.configura}"
            update="selectOneMenuGrupo,secoes"></p:ajax>
        <f:selectItem itemLabel="Selecione" itemValue="" />
        <f:selectItems value="#{permissaoListBean.listaSistema}"
            var="sistema" itemLabel="#{sistema.nome}" itemValue="#{sistema}">
        </f:selectItems>

    </p:selectOneMenu>
</div>
 

这是我的Backing Bean

@Component("permissaoListBean")
@Scope("session")
public class PermissaoListBean {
private List<Sistema> listaSistema = new ArrayList<Sistema>();
//Service das entidades

@Autowired
private SistemaService sistema;

@Autowired
private GrupoService grupo;

@Autowired
private SecaoService secao;

//Objetos da view

private Sistema sistemaSelecionado;
private Grupo grupoSelecionado;
private List<Secao> secaoSelecionada = new ArrayList<Secao>();
private LazyDataModel<Secao> modelo ;


public void populaSistema(){
    listaSistema = sistema.findAll();
}

public void configura(){
    populaGrupo();
    populaSecao();
}

public void populaGrupo(){
    setListaGrupo(grupo.findBySistema(sistemaSelecionado));
}

//dataTable lazyLoad code

//end of lazyload

public List<Sistema> getListaSistema() {
    setListaSistema(sistema.findAll());
    return listaSistema;
}

public void setListaSistema(List<Sistema> listaSistema) {
    this.listaSistema = listaSistema;
}

//getters and setters

0 个答案:

没有答案