【问题标题】:How to deactivate a JSF tag (Primefaces)如何停用 JSF 标记(Primefaces)
【发布时间】:2015-05-06 15:42:04
【问题描述】:

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

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

【问题讨论】:

  • 可能是grepawk 的git 预提交挂钩?只是一个建议——我还没有尝试过。

标签: jsf primefaces jsf-2.2 blacklist


【解决方案1】:

标准的 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&lt;Class&lt;UIComponent&gt;&gt; 中的白/黑列表检查每个组件类。

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

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

【讨论】:

  • 或您自己以前的答案:stackoverflow.com/questions/28560957/…
  • @Kukeltje:啊,这解释了我的似曾相识!
  • 我去,但我不得不尝试三种不同的谷歌搜索,只是间接找到它
  • @Kukeltje:我也找不到。感谢您找到它,我已将其包含在答案中。
猜你喜欢
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多