【问题标题】:h:selectOneMenu change event with p:ajaxh:selectOneMenu 使用 p:ajax 更改事件
【发布时间】:2012-05-07 17:50:58
【问题描述】:

我正在尝试使用 p:ajax 从 h:selectOneMenu 的变化中获取值。 但我总是得到空值,不知道下面的代码有什么问题。

<h:form>
<h:selectOneMenu id="selectMenu" value="#{userHomeController.gymsSelectType}">

<f:selectItem itemLabel="Close to me" itemValue="closest" />
<f:selectItem itemLabel="Visited by me" itemValue="visited" />
<p:ajax process="selectMenu" listener="#{userHomeController.selectMenuListener}" event="change" update=":home-form:panel"  />

</h:selectOneMenu>
</h:form>

而 bean 类是

 public void selectMenuListener() {
    System.out.println("-------- >> " + gymsSelectType); // here null coming
    if (gymsSelectType.equals("a")) {
        //
    } else {
       //
    }
}

这是一个视图范围类。 并且变量gymsSelectType的下面的setter也打印为null

public void setGymsSelectType(String gymsSelectType) {
     System.out.println("------------ >> "+gymsSelectType);
    this.gymsSelectType = gymsSelectType;
}

【问题讨论】:

  • 你会执行一些逻辑还是仅仅显示/隐藏数据或面板?因为最后一个只能使用 JavaScript 来实现。
  • 必须根据选择做一些逻辑
  • 代码看起来不错,虽然您可以只使用&lt;p:ajax update=":home-form:panel" listener="#{userHomeController.selectMenuListener}" /&gt;,但它会在每次选择值时调用,这是这里的默认 ajax 事件。如果即使这样你也会得到null,那么问题就出在其他地方。尝试将&lt;h:messages /&gt; 添加到您的facelet 以查看验证是否没有错误等。
  • 我遇到了同样的问题。你解决过这个问题吗?

标签: java jsf-2 primefaces


【解决方案1】:

试试这个

<p:ajax process="@this" listener="#{userHomeController.selectMenuListener}" event="change" update=":home-form:panel"  />

【讨论】:

  • 3 年后,这个问题救了我的命。谢谢。
【解决方案2】:

试试这个

&lt;p:ajax partialSubmit="true" listener="#{userHomeController.selectMenuListener}" event="change" update=":home-form:panel" /&gt;

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2014-12-26
    • 2015-06-16
    • 2019-10-01
    相关资源
    最近更新 更多