我有一个简单的selectOneMenu框,如下所示:
<h:form>
<h3>Combo Box</h3>
<h:selectOneMenu value = "#{userData.data}">
<f:selectItem itemValue = "1" itemLabel = "Item 1" />
<f:selectItem itemValue = "2" itemLabel = "Item 2" />
<f:selectItem itemValue = "3" itemLabel = "Item 3" />
<f:selectItem itemValue = "4" itemLabel = "Item 4" />
<f:selectItem itemValue = "5" itemLabel = "Item 5" />
</h:selectOneMenu>
<h:commandButton value = "+" />
</h:form>
我想要做的是点击此框旁边的+(添加)按钮从此框中选择多个项目。这意味着当用户首先选择框中的项目,然后单击+时,我想在其下方显示另一个+按钮的新框,以便用户可以根据需要添加其他项目,并且选择的项目将是使用 - 符号显示在新框的顶部,以便他们可以删除所选项目。它的工作方式如下:this bootstrap form
在JSF中可以使用这种盒子吗?谢谢!
答案 0 :(得分:1)
是的,这可能与他们在链接上所做的一样。
如果你需要panelGrid。如果单击按钮,该按钮将调用actionlistener,这将创建新的selectonemenu。请记住更新您的表单或panelgrid以查看它(这也可以在managedbean中完成)。
<h:form id="myform">
<h:panelGrid id="myPanelGrid" columns="1">
<h:selectOneMenu value = "#{userData.data}">
<f:selectItem itemValue = "1" itemLabel = "Item 1" />
<f:selectItem itemValue = "2" itemLabel = "Item 2" />
<f:selectItem itemValue = "3" itemLabel = "Item 3" />
<f:selectItem itemValue = "4" itemLabel = "Item 4" />
<f:selectItem itemValue = "5" itemLabel = "Item 5" />
</h:selectOneMenu>
<h:commandButton value = "+" actionListener="#{managedBean.addSelectOneMenuToGrid()}">
<f:ajax execute="@form" render=":myForm" />
</h:commandButton>
</h:panelGrid>
<h:panelGrid id="myPanelGridToAdd" columns="1">
...
</h:panelGrid>
</h:form>
并在您的托管bean中,单击按钮+后,以编程方式将新的selectonemenu添加到panelGrid中。
public void addSelectOneMenuToGrid()
{
HtmlPanelGrid component = (HtmlPanelGrid) FacesContext.getCurrentInstance().getViewRoot().findComponent(":myform:myPanelGridToAdd" );
SelectOneMenu newMenu = new SelectOneMenu();
newMenu.setRendered(true);
UISelectItems items = new UISelectItems();
....
newMenu.getChildren().add(items);
...
}
这并不容易。但你需要的并不容易:D
祝你好运。如果您需要有关managedbean部分的更多信息,请随时询问