如何停用JSF标记(Primefaces)

时间:2015-05-06 15:42:04

标签: jsf primefaces jsf-2.2 blacklist

我在我的UI上使用Primefaces 5.x(在myFaces 2.2.x上),我想禁用/停用一些JSF标签,以避免错误。

我可以使用黑名单或白名单吗?

1 个答案:

答案 0 :(得分:5)

标准的JSF / PrimeFaces API中没有这样的东西。

Quick'n'dirty解决方法将覆盖webapp的faces-config.xml中的组件注册,从而将组件类设置为非UIComponent类(最终将使用ClassCastException ),或者抛出例如的自定义UIComponent IllegalArgumentException在其构造函数中。

E.g。如果您希望避免使用<p:selectOneMenu> component component type of org.primefaces.component.SelectOneMenu

<component>
    <component-type>org.primefaces.component.SelectOneMenu</component-type>
    <component-class>java.lang.Object</component-class>
</component>

构建它之后的另一种方法是manually visit the component tree,并根据Set<Class<UIComponent>>中的白/黑列表检查每个组件类。

更简洁的替代方法是override Application#createComponent()根据白/黑名单检查组件类型。

另一种方法是编辑PrimeFaces taglib / config XML以删除不需要的组件并重建JAR。