2013-01-17 52 views
0

我試圖通過programmcode創建一個HtmlSelectOneMenu。這不是問題。我意識到這樣的:JSF:動態創建組件兩次

 final UISelectItem select = (UISelectItem) app.createComponent(UISelectItem.COMPONENT_TYPE); 

    //Items für DropDownMenü erstellen 
    List<SelectItem> items = new ArrayList<SelectItem>(); 
    for (int k = 0; k < Gender2.values().length; k++){ 
    items.add(new SelectItem(Gender2.values()[k]));     
    } 

    //Items dem DropDown Menü zuordnen 
    UISelectItems selectItems = new UISelectItems(); 
    selectItems.setValue(items); 
    selectOneRadio = (HtmlSelectOneMenu) app.createComponent(HtmlSelectOneMenu.COMPONENT_TYPE); 
    selectOneRadio.getChildren().add(selectItems); 
    testgrid.getChildren().add(selectOneRadio); 

當我再次調用該方法,會出現以下錯誤: 異常報告

消息

descriptionThe服務器遇到內部錯誤()阻止其完成這個請求。

例外 javax.servlet.ServletException:Komponenten-ID j_idt3:j_id5已經發現

願意我可以對這個錯誤呢?

+0

何時您正在調用此方法?您正在使用哪個JSF impl /版本? – BalusC

+0

我調用這個方法第一次工作完美,但第二次沒用! – Yves

回答

0

您應該爲使用setId()方法創建的組件分配唯一的ID。

可以醚生成的ID在你自己的,或者使用:

FacesContext.getCurrentInstance().getViewRoot().createUniqueId() 

生成它們。

+0

嘿partlov,謝謝你的快速答案。現在是我的問題如何生成唯一的ID – Yves

+0

好吧,我試着用createUniqueID(),但錯誤再次發生。索姆時不在第一次點擊,但是當我想創建一個新的項目。 – Yves

+0

好吧,我得到了。我將會話bean的範圍從請求改爲請求,現在它可以工作了! – Yves