2

我正在尝试在 Prime Faces 中创建一个动态调查应用程序。我有一个问题对象列表,每个问题对象都包含一个 AnswerChoices 列表。这些被赋予 f:selectItems 值属性。这可以。问题对象还包含一个 selectedValues 列表,该列表提供给相关的 selectOne/many 组件。

因为我希望是通用的,所以会有多个选择值的问题,还有一些只有一个选择值的问题。我希望能够将 selectOne 和 selectMany 组件指向代表 selectedValues 的相关 Question 对象中的字符串列表。

这适用于 selectMany 组件,但不适用于需要指向单个对象而不是列表的 selectOne 组件。有没有一种我错过的简单方法 - 因为如果可能的话,我只想有一个代表 selectedValues 的对象

4

1 回答 1

0

您可以使用大括号表示法将值绑定到特定索引处的列表/数组项。下面的示例将值绑定到列表/数组的第一项。

<h:selectOneMenu value="#{bean.selectedAnswers[0]}" />

但是有一个警告:您需要在 bean 的(后)构造期间自己准备带有单个项目的列表/数组。JSF/EL 不会在<h:selectOneMenu>.

例如

@PostConstruct
public void init() {
    selectedAnswers = new ArrayList<Answer>();
    selectedAnswers.add(null);
}

UISelectMany顺便说一下,为组件重用这个预初始化的属性并没有什么坏处。

于 2012-10-25T17:43:46.347 回答