1

レガシー プロジェクトをより最新のライブラリ バージョンに変換します。古いバージョンでは、次のajax4jsfコードを使用していました。

HtmlAjaxCommandLink link = new HtmlAjaxCommandLink()
link.addAjaxListener(new AjaxListener() {
    @Override
    public void processAjax(AjaxEvent event) { }
});

ドキュメントによると、HtmlAjaxCommandLinkは Richfaces 4 でUICommandLinkに置き換えられました。

ただし、コントロールのaddAjaxListenerに代わるものを見つけることはできないようです。

何と交換できますか?

4

1 に答える 1

4

JSF2以降、ajaxはJSFAPIによって標準化されています。クライアントの動作をサポートするすべてのコンポーネントを実装する必要があります。これにより、クライアントの動作を追加する方法がClientBehaviorHolder提供されます。addClientBehavior()ajaxの具体的なクライアント動作の実装は、まさにあなたが探しているものであるメソッドをAjaxBehavior提供するものです。addAjaxBehaviorListener()

すべて、あなたの特定のケースでは、それは次のように置き換えることができます:

UICommandLink link = new UICommandLink(); // Note: you can also just use standard JSF HtmlCommandLink.
link.setId("linkId"); // Fixed ID is mandatory for successful processing.
link.setValue("click here"); // Not sure if you need it. Just to be complete.
AjaxBehavior ajaxAction = new AjaxBehavior();
ajaxAction.addAjaxBehaviorListener(new AjaxBehaviorListener() {
    @Override
    public void processAjaxBehavior(AjaxBehaviorEvent event) throws AbortProcessingException {
        System.out.println("Ajax behavior listener invoked."); // Do your actual job jere.
    }
});
link.addClientBehavior("action", ajaxAction); // Note: don't use "click" event!
于 2013-02-19T19:34:00.940 に答える