AjaxBehavior在运行时被添加,但是AjaxBehaviorListener没有被调用



我试图在运行时在<h:inputText>组件中添加一些ajax行为。我花了一天的时间来找出下一个代码的问题,但没有成功。

在调用initUIComponent方法之后,组件确实触发了ajax请求,还返回了一个普通的ajax响应。然而,AjaxBehaviorListener永远不会被调用。我错过了什么?我使用的是带有默认mojarra实现的glassfish 3.1.2.2。

public void initUIComponent(HtmlInputText c) {
    FacesContext fc = FacesContext.getCurrentInstance();
    AjaxBehavior ajaxBeh = (AjaxBehavior) fc.getApplication() .createBehavior(AjaxBehavior.BEHAVIOR_ID);
    ajaxBeh.setRender(Collections.singletonList("elId1"));
    ajaxBeh.setExecute(Collections.singletonList("@this"));
    ajaxBeh.addAjaxBehaviorListener(new AjaxBehaviorListener() {
        @Override
        public void processAjaxBehavior(AjaxBehaviorEvent e)
                throws AbortProcessingException {
            System.out.println("Something is happening!");
        }
    });
    c.addClientBehavior("keyup", ajaxBeh);
}

最后看来这是Mojarra的bug。代码与MyFaces一起顺利地工作。下面是相关的Jira问题(JAVASERVERFACES-2674)

相关内容

  • 没有找到相关文章

最新更新