如何将jsf primefaces主题应用于单个jsf页面

时间:2015-01-29 05:57:50

标签: css jsf primefaces

我想在一个jsf页面上应用primefaces Trontastic主题。 我已阅读Applying PrimeFaces theme only for one JSF page的答案 我在代码中做了同样的更改。

我已经在WEB-INF \ lib文件夹中下载并保存了trontastic-1.0.10.jar。 提取罐子和资源'文件夹我创建了一个名为" primefaces-trontastic"的子文件夹。在这个文件夹中,我复制了主题中的theme.css文件以及' images'夹。在我的xhtml中,我在

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

但我发现我的jsf页面没有变化。 我还需要做更多其他事情吗?

1 个答案:

答案 0 :(得分:0)

我自己以不同的方式做到了(没有解压缩,保持同步......)

PF支持&#39;动态&#39;通过能够将web.xml中的主题定义解释为EL

来实现主题
<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>#{myPreferences.theme}</param-value>
</context-param>

拥有一个&#39;偏好&#39; bean并在那里设置主题名称(参见showcase源代码,当使用themeswitcher时它确实很明显),你可以切换。你可以,例如有一个

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

通常在您的模板中,在chooseTheme方法中查看正在加载的页面并设置所需的主题。你可以(我没试过)可能有一个

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

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

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

但我不确定后者是否有效