我想覆盖默认<f:ajax>
渲染的输出。是否有可能覆盖标签的处理和这个<f:ajax>
标签的渲染器?
问问题
502 次
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
,但是当已经在 any 中注册了特定的渲染器类型时faces-config.xml
,它总是优先于注释。由于 JSF impl 本身已经提供了这一点,因此注释变得无用。
作为参考,Mojarra 使用com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer
和 MyFacesorg.apache.myfaces.renderkit.html.HtmlAjaxBehaviorRenderer
用于此目的。
于 2015-05-29T10:31:32.370 回答