我有这个新问题。我在使用Primefaces 2.2.1的JSF 2.0中有以下代码:
<h:selectOneMenu id="cmbRole8" value="#{myWorkflow.posToInsert[7]}" >
<f:selectItem itemLabel="Select a position..." itemValue="-1" />
<f:selectItems value="#{appPositions.allPositions}" var="ap"
itemLabel="#{ap.roDescription}" itemValue="#{ap.roPositionid}" />
</h:selectOneMenu>
这将重复7次,总共8个selectOneMenu控件,我需要获取用户输入。显然这不起作用,因为getter和setter在分配值时不知道要使用哪个索引。我怎样才能做到这一点?
答案 0 :(得分:4)
显然这不起作用,因为getter和setter在分配值时不知道要使用哪个索引。
事实并非如此。您的问题可能是因为您没有自己预先初始化阵列。 JSF / EL即不会为你做(就像与其他所有“嵌套对象”一样)。它只会按给定的索引设置数组值。
E.g。
private int[] positions;
@PostConstruct
public void init() {
positions = new int[3]; // You need to preinitialize it yourself!
}
public int[] getPositions() {
return positions;
}
// No setter needed!
与
<h:selectOneMenu value="#{bean.positions[0]}" ... />
<h:selectOneMenu value="#{bean.positions[1]}" ... />
<h:selectOneMenu value="#{bean.positions[2]}" ... />