如何设置PrimeFaces主题?

时间:2011-02-08 16:20:36

标签: jsf primefaces

我正在尝试让我的PrimeFaces(v2.1)应用使用不同的主题。

我下载了vader-1.0.0.jar并将其放在我的WEB-INF / lib文件夹中。

我在web.xml中添加了以下内容:

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

但是当我运行应用程序时,主题不会改变。

还有其他我想念的东西吗?

4 个答案:

答案 0 :(得分:6)

使用PrimeFaces 2.1我只是把

<link type="text/css" rel="stylesheet" href="#{request.contextPath}/themes/cupertino/skin.css"/>

页面的<h:head>内部(在我的例子中是一个模板)。没有别的..而且它有效!

答案 1 :(得分:6)

您可以动态定义主题:

的web.xml:

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>#{themeBeam.applicationTheme}</param-value>
</context-param>
豆子:

@ApplicationScoped
@ManagedBean
public class ThemeBean {

    public String getApplicationTheme() {
        return "dark-hive";
    }

}

答案 2 :(得分:2)

至少在PrimeFaces 2.2中,web.xml中的正确参数为primefaces.SKIN

<context-param>
    <param-name>primefaces.SKIN</param-name>
    <param-value>none</param-value>
</context-param>
来自@Cagatay's评论的

修改 “primefaces.THEME是官方参数名称,其他名称已弃用,将在3.0中删除。”

这允许我使用会话范围的bean动态指定外观:

@Named @SessionScoped
public class LayoutBean
{
    ...
    private String theme = "aristo";
    ...
    public String getTheme()
    {
        return theme;
    }
    ...
}

然后在标记中:

<link rel="stylesheet" href="#{request.contextPath}/themes/#{layoutBean.theme}/skin.css" />

答案 3 :(得分:2)

自Primefaces 2.2 final 以来,支持包装在jar中的主题。

“primefaces.THEME”替换了web.xml中的“primefaces.SKIN”。