2

<f:ajax>デフォルトのレンダリングの出力をオーバーライドしたいと思います。<f:ajax>このタグのレンダラーごとにタグの処理をオーバーライドする可能性はありますか?

4

1 に答える 1

2

<f:ajax>カスタムClientBehaviorRenderer実装を作成<client-behavior-renderer>faces-config.xmlてレンダラー タイプとして登録することで、レンダラーをオーバーライドできますjavax.faces.behavior.Ajax

public class YourAjaxBehaviorRenderer extends ClientBehaviorRenderer {

    @Override
    public String getScript(ClientBehaviorContext behaviorContext, ClientBehavior behavior) {
        return "alert('Put your JS code here.')";
    }

}
<render-kit>
    <client-behavior-renderer>
        <client-behavior-renderer-type>javax.faces.behavior.Ajax</client-behavior-renderer-type>
        <client-behavior-renderer-class>com.example.YourAjaxBehaviorRenderer</client-behavior-renderer-class>
    </client-behavior-renderer>
</render-kit>

@FacesBehaviorRendererに類似した注釈があることに注意してください。ただし@FacesRenderer、任意の に特定のレンダラー タイプが既に登録されてfaces-config.xmlいる場合は、常に注釈よりも優先されます。これは JSF impl 自体によって既に提供されているため、アノテーションは役に立たなくなります。

参考までに、Mojarra はこの目的でcom.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer使用し、MyFaces は使用します。org.apache.myfaces.renderkit.html.HtmlAjaxBehaviorRenderer

于 2015-05-29T10:31:32.370 に答える