2012-09-17 52 views
1

我使用JSF創建問卷,因此我需要實用地創建我的整個xhtml,因爲存在不同類型的問題,並且它們的數量未預定義。以編程方式創建並將f:selectItems添加到HtmlSelectOneRadio

我只有一個h:panelGrid在我的視圖上,剩下的在我的支持bean中生成。

我沒有問題創建HtmlOutputText和HtmlInputText。爲此,我使用getApplication創建它們,例如像這樣:

getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE); 

,然後將組件添加到我的網是這樣的:

grid.getChildren().add(questionnumber); 

,其中 「網格」 是我panelGrid的元素。 所以我把我的問題放在一個循環中,並根據db中的問題類型決定要創建什麼類型的組件。如果問題是一個正常的文本問題,我可以輕鬆使用HtmlInputText。但我也有多個選擇題。因此我需要創建SelectOneRadio菜單並在其中添加SelectItems。

我可以使用與上面提到的相同的createComponent方法創建HtmlSelectOneRadio。但我無法添加選項(selectitem組件)。有沒有辦法可以做到這一點?我們有沒有這個我失蹤的UIComponent?

回答

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); 
相關問題