如何在支持bean JSF 2.0中为数组赋值

时间:2011-10-06 15:27:26

标签: arrays jsf primefaces javabeans

我有这个新问题。我在使用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在分配值时不知道要使用哪个索引。我怎样才能做到这一点?

1 个答案:

答案 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]}" ... />