我需要让不同的用户使主题动态化,目前,我在http://www.developer.am/primefaces/?page=Applying%20a%20Theme
中找到指南它说: 如果您想使主题动态化,请将EL表达式定义为参数值。
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>#{loggedInUser.preferences.theme}</param-value>
</context-param>
据我了解,主题会被不同的用户改变,对吧?即使我在用户偏好中更改主题,我也无需重启中间件,主题会立即更改,对吧?
请提前指导我。
答案 0 :(得分:4)
您似乎期望在解析web.xml
时评估EL表达式。这不是真的。相反,所有PrimeFaces从web.xml
init参数获得的是String
,表示EL表达式,如下所示:
String themeExpression = "#{loggedInUser.preferences.theme}";
然后,PrimeFaces以编程方式对每个HTTP请求进行评估,如下所示,以获得实际值:
String theme = context.getApplication().evaluateExpressionGet(context, themeExpression, String.class);
在效果中,它的请求作用域,而不是您期望的应用程序作用域。但是,evaluate属性又可以只是会话范围bean的属性。
答案 1 :(得分:1)
是。您只需要一个将用户的主题名称作为字符串返回的bean。