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

Jsf 组合框(selectOneMenu)中的第一个选定项,jsf,combobox,selectonemenu,Jsf,Combobox,Selectonemenu,我想从组合框SelectOne菜单中的列表中选择一个值,但我想在打开组合框时,首先记住selectitem,然后是其他selectitems。我只想在后台选择一个项目,当页面加载时,需要选择该项目 这是我的密码: <p:selectOneMenu value="#{indexBean.filter.ev}" converter="javax.faces.Integer" style="width: 70px"> <f:selectItem itemLabel="-Min

我想从组合框SelectOne菜单中的列表中选择一个值,但我想在打开组合框时,首先记住selectitem,然后是其他selectitems。我只想在后台选择一个项目,当页面加载时,需要选择该项目

这是我的密码:

<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方法,但也许这就是解决方案。你能帮助我吗?谢谢

将valueChangeListener添加到p:SelectOne菜单,并将所选值作为单独的属性获取/设置

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

我的印象是,即使在发送同步GET请求之后,您仍然希望选择一个已经选择的项目。在这种情况下,唯一的选择是将所选项目值={indexBean.filter.ev}存储到用户的会话中。您似乎正在尝试处理日期时间选择器。在这种情况下,为什么不使用PrimeFaces提供的日历呢。是的,a给人一种PrimeFaces用法的印象。嗯。。我添加了valueChangeListener和yearValueChangeListener方法。getter setter不重要,因为我使用lombok,我知道你想做什么,但那不起作用。:/我在yearValueChangeListener方法中也尝试了一些不同的方法:“if vce.getNewValue!=null | | vce.getNewValue!='但它也不起作用。更多想法?那么你想实现什么?我想在组合框中选择一个项目,这样页面加载时就不会显示-Mind-了,我需要先显示2015,但我想保持项目的顺序。顺序是:-记住,2015,2014我想保留在列表中:但不想在页面加载时默认选择它,我想在页面加载时选择另一个值,但我也想保留列表顺序。那么,列表中有什么问题?指定selectedYear=2015或要在加载时保持选中状态的值。
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());
    }
}