2

PrimeFacesで動的調査アプリケーションを作成しようとしています。それぞれがAnswerChoicesのリストを含む質問オブジェクトのリストがあります。これらはf:selectItems値属性に与えられます。これで結構です。質問オブジェクトには、関連するselectOne/manyコンポーネントに与えられるselectedValuesのリストも含まれています。

私は一般的なものを探しているので、複数の値が選択されている質問と、1つの値しか選択されていない質問があります。selectOneおよびselectManyコンポーネントが、selectedValuesを表す関連するQuestionオブジェクト内の文字列のリストを指すことができるようにしたかったのです。

これは、selectManyコンポーネントでは問題なく機能しますが、リストではなく単一のオブジェクトを指す必要があるselectOneコンポーネントでは機能しません。私が見逃しているこれを回避する簡単な方法はありますか?可能であれば、selectedValuesを表すオブジェクトを1つだけにしたいので

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 に答える