如何在Primefaces 3中通过Java代码设置主题?

时间:2011-12-09 09:20:11

标签: jsf-2 primefaces

我有例如主题test。如何在Primefaces中使用Java代码设置此主题?我不想使用上下文参数primefaces.THEME,我不想使用<p:themeSwitcher>

2 个答案:

答案 0 :(得分:6)

还有一种方法:将样式表包含在您的页面模板中:

<h:body> <h:outputStylesheet library="primefaces-#{themesBean.theme}" name="theme.css" /> </h:body>

其中#{themesBean.theme}变量引用您主题的名称。

P.S。在PF5中测试

关于类似问题https://stackoverflow.com/a/24092773/2993327

的相同答案

答案 1 :(得分:1)

这是你需要做的(未经测试,但应该告诉你它应该如何工作)

  • 禁用标准主题支持(在web.xml中):

代码:

<context-param>
  <param-name>primefaces.THEME</param-name>
  <param-value>none</param-value>
</context-param>
  • 创建一个托管bean(CDI或std JSF),其中包含主题的值。

代码:

@Named @SessionScoped
public class LayoutBean
{
    ...
    private String theme = "test";
    ...
    public String getTheme()
    {
        return theme;
    }
    ...
}
  • 在所有网页(模板)的头部添加以下标记

代码:

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

您可以在以下网址how to set a PrimeFaces theme?

上找到此解决方案