ajax - 覆盖 <f :ajax> rendering with a custom renderer

标签 ajax jsf custom-renderer

我想覆盖默认 <f:ajax> 的输出渲染。是否有可能覆盖 <f:ajax> 的处理分别标记该标记的渲染器?

最佳答案

您可以覆盖 <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 为此目的。

关于ajax - 覆盖 <f :ajax> rendering with a custom renderer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30525901/

相关文章:

javascript - 如何防止 JQuery 的 val() 删除空格后的所有内容?

ajax - 带有 prependId ="false"的 UIForm 中断 <f :ajax render>

c# - Xamarin slider 自定义渲染器 DragCompleted 事件

JavaScript 使用 pubnub.time() - 代码在设置值之前进行

javascript - Ajax,使用div标签设置javascript值

jQuery 插件冲突 - 请帮忙

java - JSF 和 ManagedBean : NullPointerException

java - 您如何在 JavaServer Faces 中执行分页列表?

android - 在适用于 Android 的 Xamarin.Forms 上使用 Google map

Xamarin 在 Android 中的框架上形成阴影