我正在尝试让我的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>
但是当我运行应用程序时,主题不会改变。
还有其他我想念的东西吗?
答案 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”。