【问题标题】:Invoke action method on click of h:selectOneMenu单击 h:selectOneMenu 调用操作方法
【发布时间】:2013-09-18 05:17:18
【问题描述】:

我有以下下拉列表:

<h:selectOneMenu value="#{user.favCoffee3}"  onclick="">
   <f:selectItems value="#{user.favCoffee3Value}" var="c"
   itemLabel="#{c.coffeeLabel}" itemValue="#{c.coffeeValue}" />
</h:selectOneMenu>

我想通过单击下拉列表项从 bean 启动一些方法。我怎样才能实现它?

【问题讨论】:

    标签: jsf action selectonemenu


    【解决方案1】:

    您可以使用valueChangeListener 属性,指向托管bean 中的一个方法,并在onchange 属性中添加submit()

    表格应如下所示:

    <h:form>
        <h:selectOneMenu valueChangeListener="#{bean.valueChanged}" 
                         onchange="submit()">
            <f:selectItem itemValue="1" itemLabel="First" />
            <f:selectItem itemValue="2" itemLabel="Second" />
        </h:selectOneMenu>
    </h:form>
    

    托管 bean 中的 valueChangeListener 方法是:

    public void valueChanged(ValueChangeEvent event) {
        //do your stuff
    }
    

    【讨论】:

    • 很高兴知道。谢谢! :)
    • 我想用它来处理项目值,但是当我改变它并使用它时,它会显示与项目关联的 bean 字段的 previos 值
    • 我用
    【解决方案2】:

    作为基本 JSF 工具包的一部分,您可以使用 &lt;f:ajax/&gt; 标签来提交(使用 ajax)您的输入,而无需提交/刷新整个页面。使用您的代码示例

    1. &lt;f:ajax/&gt; 标记定义为下拉菜单的子项

      <h:selectOneMenu value="#{user.favCoffee3}"  onclick="">
         <f:selectItems value="#{user.favCoffee3Value}" var="c" itemLabel="#{c.coffeeLabel}" itemValue="#{c.coffeeValue}" />
         <f:ajax listener="#{user.doSomething}"/>
      </h:selectOneMenu>
      
    2. 在您的支持 bean 中定义一个方法(在此示例中为 doSomething()),该方法接受 AjaxBehaviorEvent 的实例

      public void doSomething(AjaxBehaviorEvent abe){
        //do what you want with your favCoffee3 variable here
      }
      

    进一步阅读:

    【讨论】:

      【解决方案3】:

      似乎适用于a4j:support。你的h:selectOneMenu 看起来像这样:

      <h:selectOneMenu value="#{user.favCoffee3}">
          <f:selectItems value="#{user.favCoffee3Value}" var="c" itemLabel="#{c.coffeeLabel}" itemValue="#{c.coffeeValue}" />
          <a4j:support event="onchange" action="#{user.onSelectOneMenuChange}">
      </h:selectOneMenu>
      

      您还需要添加以下标记库:

      <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
      

      【讨论】:

      • 您至少应该提到您的答案要求 OP 承担 Richfaces 的新依赖
      猜你喜欢
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多