2

我正在尝试<h:inputText>在运行时在组件中添加一些 ajax 行为。我花了一天时间弄清楚下一个代码出了什么问题,但没有成功。

调用该initUIComponent方法后,组件确实触发了ajax请求,也返回了正常的ajax响应。然而,AjaxBehaviorListener 永远不会被调用。我错过了什么?我使用 glassfish 3.1.2.2 和默认的 mojarra 实现。

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);

}
4

1 回答 1

0

最后,这似乎是一个 Mojarra 错误。该代码可与 MyFaces 顺利配合使用。是相关的 Jira 问题 (JAVASERVERFACES-2674)。

于 2013-03-11T21:12:09.867 回答