将selectedonemenu中的selectedValue添加到列表中

时间:2013-04-23 10:48:02

标签: jsf primefaces arraylist managed-bean selectonemenu

所以,这是交易: 我在视图中有一个selectOneMenu:

<p:selectOneMenu value="#{personBean.person.personStates.state}" id="estadoRg"
    converter="entityConverter">
    <f:selectItems value="#{stateBean.states}" var="state" 
        itemLabel=#{state.name}" itemValue="#{state}">
    </f:selectItems>
</p:selectOneMenu>

其中personStates是包含person,state n date的列表。 是否可以将itemValue中的值直接添加到personStates列表中? (我的PersonModel中有一个addPersonState方法autobuilt)

如果没有,我应该怎么做? 我不想在我的personBean中为每个selectOneMenu(将是5)添加一个状态实例... 它清楚了吗?

1 个答案:

答案 0 :(得分:2)

您应该通过selectedState值处理它,然后您可以为特定的人绑定它:

<p:selectOneMenu value="#{stateBean.selectedState}" id="estadoRg"
    converter="entityConverter">
    <f:selectItems value="#{stateBean.states}" var="state" 
        itemLabel=#{state.name}" itemValue="#{state}">
    </f:selectItems>
</p:selectOneMenu>

这是p:selectOneMenu的使用方式,能够绑定选定的状态,而且人们调用方法:

<p:commandButton actionListener="#{personBean.matchStates}" />

支持bean方法:

public void matchStates {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ElContext elContext = facesContext.getELContext();
    Object stateBean = elContext.getELResolver().getValue(elContext, null, "stateBean"). 
    State selectedState = stateBean.getSelectedState();
    personList.get(index).setState = selectedState;
}