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 回答