防止 PrimeFaces 呈现样式 类

Prevent PrimeFaces from rendering style classes

我正在尝试在我现有的应用程序中使用一些 Primefaces 功能。我现在不想让 Primefaces 弄乱我现有的 CSS,所以我尝试 disable the theme 在我的 web.xml:

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>none</param-value>
</context-param>

但是,PrimeFaces 仍在我的元素中呈现各种 ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left,这会影响我当前的 CSS 样式。我不认为将我的 CSS 移到 body 上是一个好的解决方案,也不优雅,而且我认为使用 !important 也不是一个好的解决方案。我怎样才能阻止 PrimeFaces 插入各种不需要的样式?

起初您的问题有点令人困惑。您找到的解决方案只能用于防止主题化,这基本上归结为设置自定义样式sheet。这不会改变组件的呈现方式。正如您所注意到的,样式 类 无论如何都会被渲染。这不能是 "prevented"(如关闭),但您可以 override the renderer 用于要自定义的组件。但是要小心.. JavaScript 功能可能需要某些样式 类!

另一种解决方案可能是切换到 JSF 核心 HTML 或不同的组件库,如 BootsFaces or ButterFaces。这取决于您需要的组件,您可能 运行 在使用不同的库时遇到同样的问题。

或者,您可以坚持使用 PrimeFaces 并学习如何 override the default PrimeFaces CSS with custom styles。这可以在正文中没有任何 CSS 或使用 !important 的情况下完成。只需创建具有更具体规则的样式 sheet。