f:ajax里面的AjaxBehaviorEvent:selectOneMenu有时为null

时间:2016-01-25 13:59:54

标签: ajax jsf jsf-2 primefaces

我目前正在观察来自值更改事件的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)

0 个答案:

没有答案
相关问题