| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Locale в JSF |
| Автор: oson 21.2.2008, 17:22 | ||
| Господа! Объясните пожалуйста, как определяет JSF Locale на клиентском компе. Я получаю Locale таким образом
Но например если у операционной системы стоит русская локаль, а в самом браузере в настройках "Языки" - турецкая, то этот код определяет турецкую локаль. Если у операционной системы стоит русская локаль, а в самом браузере в настройках "Языки" - вообще ничего, то этот код определяет ту локаль, которая не на клиенте, а на сервере. То есть я не могу понять 1-Какую собственно локаль должен читать этот код - ту что у Виндоус выставлена? Или же этот метод должен вернуть локаль, ориентируясь по выбранному языку в браузере? 2-Как вообще они зависят друг от друга - локаль на компьютере и язык в настройках браузера ? |
| Автор: Maksym 21.2.2008, 17:56 |
| http://java.sun.com/javaee/5/docs/api/javax/faces/component/UIViewRoot.html#getLocale() |
| Автор: Kangaroo 21.2.2008, 18:12 |
| Maksym, так вроде это метод другой. Есть же разница FacesContext.getInstance() и getFacesContext().getExternalContext() ? |
| Автор: Maksym 21.2.2008, 19:08 | ||
Как минимум, они возвращают экземпляры разных классов http://java.sun.com/javaee/5/docs/api/javax/faces/context/FacesContext.html и http://java.sun.com/javaee/5/docs/api/javax/faces/context/ExternalContext.html (В нормально практике, экземпляр FacesContext в любом случае будет один и тот же откуда бы к нему не доступались (в рамках потока обрабатывающего запрос пользователя, конечно). Он создается jsf'ами через FacesContextFactory на базе текущего request'а и глобального состояния веб-приложения. --- но это все jsf детали которые к вопросу прямого отношения не имеют) Я показал метод, который, на мой взгляд, правильно использовать для выяснения активной локали пользовательской сессии в своем коде. Поскольку этот метод используют сами jsf'ы в своих механизмах локализации. И хотя результат этого метода вычисляется в том числе и на основании локали запроса, мне кажется что идеологически правильнее использовать его.. чтобы не было рассинхронизации в том какую локаль считать текущей между вашим кодом и тем что думает фреймворок. |
| Автор: oson 22.2.2008, 12:31 | ||
Попробовал оба метода.
Первый все время выдает en, какие бы настройки ни были в Винде или браузере. Второй выдает настройки языка в браузере, а если их нет вообще никаких, то то винды. |