如何停用 JSF 标签 (Primefaces)
How to deactivate a JSF tag (Primefaces)
我为我的 UI 使用 Primefaces 5.x(在 myFaces 2.2.x),我想禁用/停用一些 JSF 标签以避免错误。
我可以使用黑名单或白名单吗?
标准中没有这样的东西 JSF/PrimeFaces API.
Quick'n'dirty 解决方法将覆盖 webapp faces-config.xml
中的组件注册,您可以将组件 class 设置为非 UIComponent
class(它最终会在使用时抛出 ClassCastException
),或者抛出例如 UIComponent
的自定义 UIComponent
IllegalArgumentException
在其构造函数中。
例如如果您想避免使用 <p:selectOneMenu>
component which has a component type of org.primefaces.component.SelectOneMenu
:
<component>
<component-type>org.primefaces.component.SelectOneMenu</component-type>
<component-class>java.lang.Object</component-class>
</component>
另一种方法是 在构建之后检查每个组件 class 与 Set<Class<UIComponent>>
中的 white/black 列表。
一个更干净的替代方法是 根据 white/black 列表检查组件类型。
另一种选择是编辑 PrimeFaces taglib/config XML 以删除不需要的组件并重建 JAR。
我为我的 UI 使用 Primefaces 5.x(在 myFaces 2.2.x),我想禁用/停用一些 JSF 标签以避免错误。
我可以使用黑名单或白名单吗?
标准中没有这样的东西 JSF/PrimeFaces API.
Quick'n'dirty 解决方法将覆盖 webapp faces-config.xml
中的组件注册,您可以将组件 class 设置为非 UIComponent
class(它最终会在使用时抛出 ClassCastException
),或者抛出例如 UIComponent
的自定义 UIComponent
IllegalArgumentException
在其构造函数中。
例如如果您想避免使用 <p:selectOneMenu>
component which has a component type of org.primefaces.component.SelectOneMenu
:
<component>
<component-type>org.primefaces.component.SelectOneMenu</component-type>
<component-class>java.lang.Object</component-class>
</component>
另一种方法是 Set<Class<UIComponent>>
中的 white/black 列表。
一个更干净的替代方法是
另一种选择是编辑 PrimeFaces taglib/config XML 以删除不需要的组件并重建 JAR。