Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > i18n в struts


Автор: sergush 12.2.2006, 02:28
есть код, который включается во все страницы:
Код

                            <html:link action="/Locale?language=en">English</html:link>&nbsp;
                            <html:link action="/Locale?language=ru" useLocalEncoding="true">Russian</html:link>

Сделано ссылками, но думаю можно и selectoм.
Необходимо, чтобы по нажатии на ссылку менялся язык и эта же страница обновлялась.
Смена языка проблем в struts не представляет, просто записываешь в сессию нужную локаль.
Но как обновить страницу?
При нажатии на ссылку вызывается метод сервлета
Код

    public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) throws Exception {...

Можно зная эту информацию обновить исходную страницу? Может как то можно сделать редирект на эту страницу? Может для этого как-то передать в запросе хотя бы адрес этой страницы?

Приветствуется любая помощь.

Автор: Nobody 12.2.2006, 14:38
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Пункт 14.36 Referer.
Добавлено @ 14:39
По крайней мере я http://headhunter.ru именно так.

Автор: sergush 14.2.2006, 01:20
Привет Nobody. Спасибо за ответ.
Вроде принцип понял, но наверное не до конца... Проблема возникает, когда дважды пытаешься поменять язык на одной странице... У тебя же все нормально... Кстати, это ты такой сайт написал? Симпатичный.
Если не трудно выложи execute метод Actiona, отвечающего за смену языка (локали).

Автор: Nobody 14.2.2006, 10:45
Код

public ActionForward execute (final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
    //Получаем новый из запроса
    final int languageId = Integer.parseInt (request.getParameter ("language"));
    //Запоминаем в сессию
    SiteUtils.setLanguage (request, Lang.getBOManager ().find (languageId));
    final String referrer = request.getHeader ("Referer");
    if (referrer != null && referrer.length () > 0) {
      //У нас есть информация о том, с какой страницы юзер пришёл. Посылаем его на неё обратно.
      response.sendRedirect (referrer);
      return null;
    } else {
      //Непонятно откуда пришёл юзер. Отправляем его на главную страницу.
      return new ActionForward("/index.do", true);
    }

Автор: sergush 18.2.2006, 01:17
Nobody, спасибо. Все заработало как я и хотел (использовал сендРедирект, правда все-таки код немного подправил).
Если бы мог, обязательно бы плюсик дал.

Автор: LSD 18.2.2006, 01:26
Цитата(sergush @ 18.2.2006, 01:17 Найти цитируемый пост)
Если бы мог, обязательно бы плюсик дал.

По многочисленным просьбам трудящихся... smile

Автор: Greg 22.11.2006, 22:59
Не хотел создавать новую тему,т.к. вопрос простой:
У меня интерфейс на английском и русском,переключение через JSTL.
Как сказать Struts,чтобы он читал из конкретного resource bundle
например для английского языка ?
Код

 <message-resources parameter="resources.Application" />
 <message-resources parameter="resources.Application_ru"/>


Код

public  ActionForward execute (ActionMapping mapping, ActionForm form,                
                   HttpServletRequest request, HttpServletResponse response) {

                Locale locale = new Locale("en");
                setLocale(request,locale); 
                ... 

У меня сообщения выводятся на русском.Подскажите плиз,а то долго мучаюсь  smile 

Автор: batigoal 23.11.2006, 09:13
Цитата(Greg @  22.11.2006,  23:59 Найти цитируемый пост)
У меня сообщения выводятся на русском.

А в resources.Application лежат сообщения на английском?

Автор: Greg 23.11.2006, 13:04
Угу.В message-resources нужно прописывать bundle для ru ?

Автор: Greg 24.11.2006, 00:28
Решено.Надо было сразу в struts-examples копаться ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)