Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Локализация, из бина 
V
    Опции темы
Zamuta
Дата 20.3.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Maksym, я сейчас читаю книжку JavaServer Faces in Action автор Kito D.Mann . Так  вот там есть такой пример:
Код

public void doFilter(ServletRequest request, 
                     ServletResponse response,
                     FilterChain chain) 
             throws IOException, ServletException
{
  ...
  HttpServletRequest httpRequest = (HttpServletRequest)request;
  HttpServletResponse httpResponse = (HttpServletResponse)response;
  HttpSession session = httpRequest.getSession();
  String requestPath = httpRequest.getPathInfo();
  ...
     if ((role.equals(RoleType.UPPER_MANAGER) && requestPath.indexOf(Constants.PROTECTED_DIR) > 0) ||
          (!role.equals(RoleType.PROJECT_MANAGER) && requestPath.indexOf(Constants.EDIT_DIR) > 0))    
     {
        String text = 
          Utils.getDisplayString(Constants.BUNDLE_BASENAME, "PathNotFound", new Object[] { requestPath }, request.getLocale());
        httpResponse.sendError(HttpServletResponse.SC_NOT_FOUND, text);            
     }
  ...
}


И дальше идёт описание
Цитата

First, note that the Constants class declares the name of the resource bundle, avoid-
ing the possibility of mistyping the name. Also, we pass in the current 
Locale directly from the HttpRequest object since there is no FacesContext yet (filters are 
executed before JSF begins processing the request)
. Since the string in the bundle 
has a parameter in it, we also need to send the 
getDisplayString method request- as a single parameter (it will replace “{0}” with the value of the requestPath).
Path

стр. 555.
Даже не знаю кому верить.... smile 

Это сообщение отредактировал(а) Zamuta - 20.3.2007, 19:26


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
Maksym
Дата 20.3.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Zamuta
То что в фильтр вывается над jsf lifecycle это понятно в этом же и смысл фильтра-то. Мне показалось, что мы говорим о работе с локалью в jsf контексте.
PM MAIL   Вверх
Zamuta
Дата 20.3.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Да, мы говорим о работе с локалью в jsf контексте. Значит это я не правильно перевёл, перевёл что request вызывается раньше чем jsf. 
Тогда буду сейчас пробовать с context.getViewRoot().getLocale().


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
Maksym
Дата 20.3.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Zamuta
То, что касается чистого jsf то, вкратце, все что нужно это:
1. Создать bundles с ресурсами, например, в виде .properties файлов с именами типа MessagesBundle_de_DE.properties, MessagesBundle_en_EN.properties и т.д.
2. Можно определить в faces-config.xml (но это, кажется, не обязательно)
Код

<faces-config>
    <application>
        <locale-config>
            <default-locale>en</default-locale>
            <supported-locale>en</supported-locale>                
            <supported-locale>de</supported-locale>
        </locale-config>
        <message-bundle>
            mypackage.MessagesBundle
        </message-bundle>        
    </application>
</faces-config>

3. Определить переменную для MessagesBundle в странице, например
Код

<f:loadBundle var="bundle" basename="imypackage.MessagesBundle" /> 

и использовать в коде страниц:
Код

<h:outputText value="#{bundle.login_key}" />

4.  Переключать локали, например в action:
Код

  FacesContext context = FacesContext.getCurrentInstance();
  context.getViewRoot().setLocale(new Locale("de", "DE"));

PM MAIL   Вверх
Zamuta
Дата 20.3.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 18.1.2006

Репутация: 4
Всего: 6



Maksym, эти пункты есс-но сделаны, без них никак. Просто меня этот пример из книжки с толку сбил, там как раз удобнее доставать локаль из реквеста, а в jsf конечно же из контекста и какого меня понесло из реквеста её доставать. А сейчас говорит "ru". Максиму +1.


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
Samotnik
Дата 2.11.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Цитата(Maksym @ 20.3.2007,  20:41)
Zamuta
То, что касается чистого jsf то, вкратце, все что нужно это:
1. Создать bundles с ресурсами, например, в виде .properties файлов с именами типа MessagesBundle_de_DE.properties, MessagesBundle_en_EN.properties и т.д.
2. Можно определить в faces-config.xml (но это, кажется, не обязательно)
Код

<faces-config>
    <application>
        <locale-config>
            <default-locale>en</default-locale>
            <supported-locale>en</supported-locale>                
            <supported-locale>de</supported-locale>
        </locale-config>
        <message-bundle>
            mypackage.MessagesBundle
        </message-bundle>        
    </application>
</faces-config>

3. Определить переменную для MessagesBundle в странице, например
Код

<f:loadBundle var="bundle" basename="imypackage.MessagesBundle" /> 

и использовать в коде страниц:
Код

<h:outputText value="#{bundle.login_key}" />

4.  Переключать локали, например в action:
Код

  FacesContext context = FacesContext.getCurrentInstance();
  context.getViewRoot().setLocale(new Locale("de", "DE"));


А можно еще раз, только по-подробнее. Вот к примеру, я что-то знаю о интернационализации, и мне нужно реализовать ее на  jstl  ПАЖАЛСТА, по шагам,  еще раз, что где создать, и где потом вызывать !!

Это сообщение отредактировал(а) Samotnik - 2.11.2007, 17:54
PM MAIL   Вверх
Maksym
Дата 2.11.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Samotnik
Ты поднял тему о jsf, к jstl все вышесказанное не относится.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1240 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.