我正在动态生成#{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
值?
答案 0 :(得分: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>