从选择框JSF中选择多个项目

时间:2017-11-03 15:52:33

标签: javascript jquery twitter-bootstrap jsf

我有一个简单的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中可以使用这种盒子吗?谢谢!

1 个答案:

答案 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部分的更多信息,请随时询问