JSF: передать реальный параметр локали в вызов resourceBundle вместо нуля по умолчанию - PullRequest
1 голос
/ 27 мая 2011

В пользовательском интерфейсе есть нетривиальное меню выхода. Его элементы названы в цикле так:

начало цикла

<li>
<h:commandLink action="#{menuItem.getGlobalTransitionName()}">#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}
</h:commandLink>
</li>

конец петли

Вызов к resourceBundle выполнен выше, где задан языковой стандарт по умолчанию - он жестко задан в значение null, поэтому разрешается в En всегда:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}

Что я пробовал:

1. это вызывает ошибку разбора:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,${externalContext.locale})}

2. это также вызывает ошибку:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,#{resourceBundle.locale})}

как я могу передать действительно использованную локаль там?

1 Ответ

1 голос
/ 27 мая 2011

Вложение выражений EL действительно недопустимо.Не делай этого.Кроме того, ExternalContext не имеет getLocale() метода.Вы хотите использовать #{facesContext.viewRoot.locale} вместо.

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,facesContext.viewRoot.locale)}
...