1

私はJSFを使用してアンケートを作成しています。したがって、さまざまな種類の質問があり、それらの数が事前定義されていないため、xhtml全体を実用的に作成する必要があります。

ビューに ah:panelGrid があるだけで、残りはバッキング Bean で生成されます。

HtmlOutputText と HtmlInputText の作成に問題はありません。その目的のために、たとえば次のように getApplication を使用してそれらを作成します。

getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE);

次に、次のようにコンポーネントをグリッドに追加します。

grid.getChildren().add(questionnumber);

ここで、「グリッド」は私の panelGrid 要素です。そこで、質問をループに入れて、データベースからの質問のタイプに基づいて、作成するコンポーネントのタイプを決定します。質問が通常のテキスト形式の質問である場合、HtmlInputText を簡単に使用できます。しかし、多肢選択式の質問もあります。したがって、SelectOneRadio メニューを作成し、そこに SelectItems を追加する必要があります。

HtmlSelectOneRadio上で述べたのと同じ createComponent メソッドを使用して を作成できます。しかし、オプションを追加することはできません (selectitem コンポーネント)。これを行う方法はありますか?このための UIComponent はありますか?

4

1 に答える 1

3

私は自分で解決策を見つけました。UISelectItems を使用して、次のように SelectOneMenu に追加する必要がありました。

final UISelectItem select = (UISelectItem) getApplication().createComponent(UISelectItem.COMPONENT_TYPE);
List<SelectItem> items = new ArrayList<SelectItem>();
for (int k = 0; k < options.length; k++){
items.add(new SelectItem(options[k]));                
}
UISelectItems selectItems = new UISelectItems();
selectItems.setValue(items);
selectOneRadio.getChildren().add(selectItems);
 grid.getChildren().add(selectOneRadio);
于 2012-09-17T18:06:18.120 に答える