3

だから、ここに取り引きがあります: 私のビューには 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 は人物、州 n の日付を含むリストです。itemValue の値を personStates リストに直接追加することはできますか? (PersonModel で自動構築された addPersonState メソッドがあります)

そうでない場合、どうすればよいですか?personBean の selectOneMenu (5 になる) ごとに 1 つの状態インスタンスを追加したくありません...明確でしたか?

4

1 に答える 1

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;
}
于 2013-04-23T11:29:16.750 に答える