2013-09-15 3 views
1

мне нужно сделать тему динамической различными пользователями, в настоящее время, я считаю, руководство в http://www.developer.am/primefaces/?page=Applying%20a%20ThemePrimeFaces: как сделать тему динамической

Он говорит: В случае, если вы хотели бы сделать тему динамической , определите выражение EL как значение параметра.

<context-param> 
    <param-name>primefaces.THEME</param-name> 
    <param-value>#{loggedInUser.preferences.theme}</param-value> 
</context-param> 

В моем понимании тема будет изменена разными пользователями, не так ли? Даже я изменяю тему в настройках для пользователя, мне не нужно перезапускать промежуточное ПО, тема будет изменена сразу, правильно?

Прошу вас, пожалуйста, заблаговременно.

ответ

1

Да. Вам просто нужен bean-компонент, который вернет имя темы пользователя в виде строки.

4

Вы, кажется, ожидаете, что выражение EL оценивается в момент анализа web.xml. Это неправда. Вместо этого, все PrimeFaces получает от web.xml инициализации PARAM является String, представляющий выражение EL как так:

String themeExpression = "#{loggedInUser.preferences.theme}"; 

Затем PrimeFaces программно оценить его при каждом запросе HTTP, как следует, чтобы получить фактическое значение:

String theme = context.getApplication().evaluateExpressionGet(context, themeExpression, String.class); 

В эффектах это область охвата, а не область применения, как вы ожидали. Вычисленное свойство может, в свою очередь, как раз быть свойством бинарного сеанса.

+0

У меня есть аналогичная проблема. Скажите, пожалуйста, как правильно передать выражение EL. Когда приложение загружается, эта ошибка возникает: «Ошибка загрузки темы, не удается найти« theme.css »ресурс« primefaces- [Ljava.lang.String; @ 6add1c32 »library" – SudeepShakya

Смежные вопросы