【发布时间】:2015-05-06 15:42:04
【问题描述】:
我的 UI 使用 Primefaces 5.x(在 myFaces 2.2.x 上),我想禁用/停用一些 JSF 标签以避免错误。
我可以使用黑名单或白名单吗?
【问题讨论】:
-
可能是
grep或awk的git 预提交挂钩?只是一个建议——我还没有尝试过。
标签: jsf primefaces jsf-2.2 blacklist
我的 UI 使用 Primefaces 5.x(在 myFaces 2.2.x 上),我想禁用/停用一些 JSF 标签以避免错误。
我可以使用黑名单或白名单吗?
【问题讨论】:
grep 或awk 的git 预提交挂钩?只是一个建议——我还没有尝试过。
标签: jsf primefaces jsf-2.2 blacklist
标准的 JSF/PrimeFaces API 中没有这样的东西。
Quick'n'dirty 解决方法将覆盖 webapp 的faces-config.xml 中的组件注册,从而将组件类设置为非UIComponent 类(它最终会在使用时抛出ClassCastException),或者自定义UIComponent 抛出例如IllegalArgumentException 在其构造函数中。
例如如果你想避免使用<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。
【讨论】: