动态创建组件两次

时间:2013-01-17 09:19:51

标签: jsf dynamic jsf-2 components

我正在尝试通过programmcode创建一个HtmlSelectOneMenu。这不是问题。我意识到这样:

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);

当我再次调用此方法时,会出现以下错误: 例外报告

消息

description服务器遇到内部错误(),导致无法完成此请求。

例外 javax.servlet.ServletException:已找到Komponenten-ID j_idt3:j_id5

我是否可以针对此错误进行操作?

1 个答案:

答案 0 :(得分:-1)

您应该使用setId()方法为要创建的组件分配唯一的ID。

您可以自己生成id,或使用:

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

生成它们。