组合框中的第一个选定项目(selectOneMenu)

时间:2015-04-30 09:22:35

标签: jsf combobox selectonemenu

我想从组合框中的列表中选择一个值(selectonemenu),但是当我打开组合框时,我希望将“-Mind-”保留为第一个选择项,然后保留其他选择项。我只想在后台选择一个项目,当页面加载时,需要选择该项目。

这是我的代码:

<p:selectOneMenu value="#{indexBean.filter.ev}" converter="javax.faces.Integer" style="width: 70px">
    <f:selectItem itemLabel="-Mind-" itemValue="#{null}"/>
    <f:selectItems value="#{indexBean.evLista}" var="ev" itemLabel="#{ev}" itemValue="#{ev}"/>
</p:selectOneMenu>

豆子:

public List<Integer> getEvLista() {
    for (int i = 2015; i >= 2014; i--) {
        evek.add(i);
    }
    return evek;
}

我想被选中,例如:2015年。我还没有@PostConstruct方法,但也许这就是解决方案。你能帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

valueChangeListener添加到p:selectOneMenu,并将所选值设置为单独的属性。

<p:selectOneMenu value="#{indexBean.selectedYear}" converter="javax.faces.Integer" 
    style="width: 70px" valueChangeListener="#{indexBean.yearValueChangeListener}">
    <f:selectItem itemLabel="-Mind-" itemValue="#{null}"/>
    <f:selectItems value="#{indexBean.evLista}" var="ev" 
        itemLabel="#{ev}" itemValue="#{ev}"/>
</p:selectOneMenu>

<强>豆:

int selectedYear = 0;

public int getSelectedYear(){
    return selectedYear;
}

public void setSelectedYear(int selectedYear){
    this.selectedYear = selectedYear;
}

public void yearValueChangeListener(ValueChangeEvent vce) {
    if (vce.getNewValue() != null) {
        selectedYear = Integer.parseInt(vce.getNewValue().toString());
    }
}