如何设置PrimeFaces主题?

Rob*_*ume 8 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>
Run Code Online (Sandbox Code Playgroud)

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

还有什么我想念的吗?

Ren*_*nan 6

使用PrimeFaces 2.1我就是这么说的

<link type="text/css" rel="stylesheet" href="#{request.contextPath}/themes/cupertino/skin.css"/>
Run Code Online (Sandbox Code Playgroud)

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


Luc*_*ral 6

您可以像这样动态定义主题:

web.xml中:

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>#{themeBeam.applicationTheme}</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

豆子:

@ApplicationScoped
@ManagedBean
public class ThemeBean {

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

}
Run Code Online (Sandbox Code Playgroud)


Mat*_*all 3

至少在 PrimeFaces 2.2 中,正确的参数web.xmlprimefaces.SKIN

<context-param>
    <param-name>primefaces.SKIN</param-name>
    <param-value>none</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

编辑@Cagatay 的评论: “primefaces.THEME 是官方参数名称,其他参数已弃用,并将在 3.0 中删除。”

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

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

然后在标记中:

<link rel="stylesheet" href="#{request.contextPath}/themes/#{layoutBean.theme}/skin.css" />
Run Code Online (Sandbox Code Playgroud)

  • primefaces.THEME 是官方参数名称,其他参数已弃用并将在 3.0 中删除。 (3认同)