是否有可能在運行時使用JSF創建多個selectOneMenu?在運行時插入selectOneMenu
我的問題是,我想創建另一個selectOneMenu每次用戶選擇一個項目在previousOneMenu。
第一個列表頁面加載時, 這裏我已經試過裝:
<h:form id="form">
<p:panel id="panel">
<p:selectOneMenu id="selCaterogy" value="#{connaissance.category}" filter="true" filterMatchMode="startsWith">
<f:selectItem itemLabel="Select une catégorie..." itemValue="" />
<f:selectItems value="#{connaissanceDAO.category}"/>
<p:ajax listener="#{connaissance.addComponent()}"/>
</p:selectOneMenu>
</p:panel>
</h:form>
public void addComponent(){
UIComponent parent = FacesContext.getCurrentInstance().getViewRoot().findComponent("form:panel");
includeCompositeComponent(parent, "http://primefaces.org/ui", "selectOneMenu", "randomID");
System.out.println("Added");
}
的includeCompositeComponent
從this question
public static void includeCompositeComponent(UIComponent parent, String taglibURI, String tagName, String id) {
FacesContext context = FacesContext.getCurrentInstance();
UIComponent composite = context.getApplication().getViewHandler()
.getViewDeclarationLanguage(context, context.getViewRoot().getViewId())
.createComponent(context, taglibURI, tagName, null);
composite.setId(id);
parent.getChildren().add(composite);
}
變得但要添加的組件心不是。 另一件事,如果在運行時添加組件是可能的,我可以填充選擇菜單之前,我將它添加到頁面?
使用Java EE7,tomcat 8和primefaces 5.0。
如果你的'H的數量鏈接:selectOneMenu'是預定義的,你可以用'rendered',而不是玩嗎? – 2014-09-03 22:42:52
你可以在jsf中使用datatable。在每一行中它都會創建下拉菜單,並且在每個按鈕上單擊它都會添加新行。是不是你想要做的。我對jsf也做過同樣的事情。讓我知道如果你想看到代碼 – 2014-09-04 11:40:11