【问题标题】:Choose multiple items from select box JSF从选择框 JSF 中选择多个项目
【发布时间】:2018-04-16 10:04:01
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery twitter-bootstrap jsf


    【解决方案1】:

    是的,这与他们在链接中所做的方式相同。

    如果你需要一个 panelGrid。如果您单击按钮,该按钮将调用 actionlistener,这将创建您的新 selectonemenu。请记住更新您的表单或面板网格以查看它(这也可以在 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 部分的更多信息,请随时询问

    【讨论】:

    • 为什么不在 xhtml 中使用ui:repeat
    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多