2

<h:inputText>実行時にコンポーネントにajax 動作を追加しようとしています。次のコードで何がうまくいかないのかを理解するのに 1 日を費やしました。

メソッドを呼び出した後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);

}
4

1 に答える 1

0

最後に、これは Mojarra のバグのようです。コードは MyFaces でスムーズに動作します。関連するJiraの問題 (JAVASERVERFACES-2674) は次のとおりです。

于 2013-03-11T21:12:09.867 に答える