【发布时间】: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 来实现。
-
必须根据选择做一些逻辑
-
代码看起来不错,虽然您可以只使用
<p:ajax update=":home-form:panel" listener="#{userHomeController.selectMenuListener}" />,但它会在每次选择值时调用,这是这里的默认 ajax 事件。如果即使这样你也会得到null,那么问题就出在其他地方。尝试将<h:messages />添加到您的facelet 以查看验证是否没有错误等。 -
我遇到了同样的问题。你解决过这个问题吗?
标签: java jsf-2 primefaces