我目前正在观察来自值更改事件的ajax调用的服务器端回调中的一个非常奇怪的行为。基本上,我在我的页面上有一个p:selectOneMenus列表,并希望根据所选内容做出一些决定。这是jsf:
<p:outputLabel value="Provider:"/>
<p:selectOneMenu id="bacc_ba_check" value="#{bean.baCheck}" style="width:20em" styleClass="bigDefaultEnabled" disabled="#{controller.readOnlyUser}">
<f:selectItem itemLabel="none" itemValue=""/>
<f:selectItems value="#{bean.baCheckStrings}" />
<f:ajax listener="#{controller.providerChanged}" render="providerlist RPPPanel" onevent="reapplyDefaults" immediate="true"/>
</p:selectOneMenu>
这是控制器中的回调:
public void providerChanged(AjaxBehaviorEvent event) {
// check for value
if ("Someval".equalsIgnoreCase(...)) {
this.setSomething(true);
} else {
this.setSomething(false);
}
令人困惑的部分如下:当我从selectOneMenu中选择其他内容时,事件始终为NULL。如果我重新选择“没有”&#39;之前选择了其他内容之后,事件被正确设置。在回调中,我想检查事件的来源是什么,以便我可以在其他地方设置一些默认值。有谁知道什么可能导致这种奇怪的行为?我真的需要知道哪个组件始终触发事件,特别是当有人在下拉列表中选择非空值时。
感谢您的帮助或任何提示。
(使用Primefaces 4.0的JSF 2.1.7 Mojarra)