1

#{materielBean2.nbrsalle}大量のドロップダウンを動的に生成しています:

<c:forEach begin="1" end="#{materielBean2.nbrsalle}" var="i">
    <p:selectOneMenu id="p#{i}" value="#{materielBean2.pole}">
        <f:selectItem itemLabel="Select Pole" itemValue="" />
        <f:selectItems value="#{materielBean2.poles}" />
        <p:ajax event="change" update="s#{i}" listener="#{materielBean2.salleChange(i)}" />
    </p:selectOneMenu>
</c:forEach>

Map<String, String>選択した値を保存したいプロパティがあります。

private Map<String, String> selectedPoles = new HashMap<String, String>();

ajax 変更リスナー メソッドは次のとおりです。

public void sallechange(int i) {
    selectedPoles.put(i, pole);
}

リスナーメソッドpoleでインデックスの選択された値を取得するにはどうすればよいですか?i

4

1 に答える 1

1

入力値をそのマップに直接バインドするだけです。

<p:selectOneMenu id="p#{i}" value="#{materielBean2.selectedPoles[i]}">

整数キーを取るようにマップを変更するだけです。

private Map<Integer, String> selectedPoles = new HashMap<Integer, String>();

または、まったく同じ方法でアクセスできる単純な配列を使用することもできます。

private String[] selectedPoles = new String[poles.size()];

<p:ajax>いずれにせよ、この方法で完全に取り除くことができます。JSF が魔法のように設定してくれます。

<p:selectOneMenu id="p#{i}" value="#{materielBean2.selectedPoles[i]}">
    <f:selectItem itemLabel="Select Pole" itemValue="" />
    <f:selectItems value="#{materielBean2.poles}" />
</p:selectOneMenu>
于 2013-04-24T17:00:36.457 に答える