【问题标题】:How to apply jsf primefaces theme for a single jsf page如何为单个 jsf 页面应用 jsf primefaces 主题
【发布时间】:2015-01-29 05:57:50
【问题描述】:

我只想为一个 jsf 页面应用 primefaces Trontastic 主题。 我已经阅读了Applying PrimeFaces theme only for one JSF page上的答案 我对我的代码进行了相同的更改。

我已下载 trontastic-1.0.10.jar 并将其保存在 WEB-INF\lib 文件夹中。 提取 jar 并在“资源”文件夹中创建了一个名为“primefaces-trontastic”的子文件夹。在这个文件夹中,我从主题和“图像”文件夹中复制了文件 theme.css。在我的 xhtml 中,我在

中添加了以下代码
<h:outputStylesheet library="primefaces-trontastic" name="theme.css" />

但我发现我的 jsf 页面没有任何变化。 我还需要做些什么吗?

【问题讨论】:

  • 这在 PrimeFaces 8.0 中对我不起作用,但在 PrimeFaces 10.0 中可以正常工作

标签: css jsf primefaces


【解决方案1】:

我自己以不同的方式完成了它(没有解压缩,保持同步等......)

PF 通过将 web.xml 中的主题定义解释为 EL 来支持“动态”主题

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>#{myPreferences.theme}</param-value>
</context-param>

通过拥有一个 'preferences' bean 并在其中设置主题名称(请参阅展示源代码,使用主题切换器时正是这样做的),您可以切换。你可以例如有一个

<f:event type="preRenderView" listener="#{myPreferences.chooseTheme"} />

通常在您的模板和chooseTheme 方法中查看正在加载的页面并设置您想要的主题。你可以(我没有尝试过)也许有一个

<f:event type="preRenderView" listener="#{myPreferences.theme('one')"} />

在通用模板中,在特定视图中可能会覆盖它。

<f:event type="preRenderView" listener="#{myPreferences.theme('two')"} />

但我不确定后者是否有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    相关资源
    最近更新 更多