我在我的UI上使用Primefaces 5.x(在myFaces 2.2.x上),我想禁用/停用一些JSF标签,以避免错误。
我可以使用黑名单或白名单吗?
答案 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。