2012-09-17 2 views
1

JSF를 사용하여 설문지를 작성하므로 여러 유형의 질문이 있고 그 수가 미리 정의되지 않았기 때문에 실제로 전체 xhtml을 작성해야합니다.프로그래밍 방식으로 f : selectItems를 HtmlSelectOneRadio에 프로그래밍 방식으로 추가하십시오.

내보기에는 h : panelGrid가 있고 나머지는 내 백업 빈에서 생성됩니다.

HtmlOutputText 및 HtmlInputText를 만드는 데 문제가 없습니다. 그 목적을 위해 나는 getApplication을 사용하여 그것들을 생성한다. 같은 :

getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE); 

다음이처럼 내 그리드 구성 요소를 추가

grid.getChildren().add(questionnumber); 

"그리드"내 panelGrid 요소입니다. 그래서 질문을 루프에 넣고 db의 질문 유형에 따라 어떤 유형의 구성 요소를 만들지 결정합니다. 질문이 일반 텍스트 질문 인 경우 HtmlInputText를 쉽게 사용할 수 있습니다. 그러나 객관식 질문도 있습니다. 따라서 SelectOneRadio 메뉴를 만들고 SelectItem을 추가해야합니다.

위에서 언급 한 것과 동일한 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);