|
|
|
Spring MVC локализация
|
|||
|---|---|---|---|
|
#18+
На странице на тулбаре есть кнопка. Предполагается, что тулбар доступен на всех страницах web-приложения. <a class="tool-button" href="<c:url value="/login/refresh.do?cmd=${cmd}&locale=ru"/>">RU</a> В контролере есть обработчик для переключения языка @RequestMapping(value = "/refresh.do") public String refresh(@RequestParam String cmd) { return "redirect:/" + cmd; } Для простых страниц, которым не надо передавать параметры, все работает. Но если, допустим, вызывается форма ввода, в которую передается некоторый ?id=1, тогда простым редиректом не обойтись. В другой форме может быть несколько параметров, например, ?id=2&type=4. Есть ли относительно простой способ организовать переключение между языками из любой формы ввода, написав общий refresh? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2016, 23:06 |
|
||
|
Spring MVC локализация
|
|||
|---|---|---|---|
|
#18+
Локаль это скорее всего свойство сеанса а не реквеста. IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2016, 23:19 |
|
||
|
Spring MVC локализация
|
|||
|---|---|---|---|
|
#18+
myauchaНа странице на тулбаре есть кнопка. Предполагается, что тулбар доступен на всех страницах web-приложения. <a class="tool-button" href="<c:url value="/login/refresh.do?cmd=${cmd}&locale=ru"/>">RU</a> В контролере есть обработчик для переключения языка @RequestMapping(value = "/refresh.do") public String refresh(@RequestParam String cmd) { return "redirect:/" + cmd; } Для простых страниц, которым не надо передавать параметры, все работает. Но если, допустим, вызывается форма ввода, в которую передается некоторый ?id=1, тогда простым редиректом не обойтись. В другой форме может быть несколько параметров, например, ?id=2&type=4. Есть ли относительно простой способ организовать переключение между языками из любой формы ввода, написав общий refresh? Это делается не так. Обычно ч/з i18n properties Где для соотвествующих локалей создаются строки. А потом на странице эти строки показываются. А локаль как было сказано выше задается в сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2016, 07:42 |
|
||
|
Spring MVC локализация
|
|||
|---|---|---|---|
|
#18+
ТС хочет переключить локаль на текущей странице, само переключение делает спринг увидев параметр locale= , автор же хочет перегрузить текущую страницу на новом языке сохранив состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2016, 11:30 |
|
||
|
Spring MVC локализация
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, Видимо я плохо объяснил. Все и так настроено для i18n, все файлы созданы, прописаны в конфигурации бины ResourceBundleMessageSource, CookieLocaleResolver (чтобы между сеансами тоже локаль сохранялась), и обработчик LocaleChangeInterceptor. То есть все делалось согласно документации спринга. В JSP тоже уже все сообщения завязаны на идентификаторы в файлах свойств. Все, в принципе, работает. В документации приведен вариант переключения между языками, как параметр, прописанный в настройках LocaleChangeInterceptor. В моем случае это locale. Чтобы переключиться достаточно выполнить запрос с передачей к произвольному URL?locale=ru или URL?locale=en. После этого все страницы открываются на требуемом языке и никаких ?locale=ru к ним добавлять уже не надо. Предположим, что язык переключается по ссылке switchLocale.do?locale=ru или switchLocale.do?locale=en (здесь и далее полный URL не пишу для краткости) Есть желание сделать смену языка, находясь на произвольной странице. То есть хидер для сайта постоянен, в нем всегда доступны кнопки переключения между языка. А сами страницы могут быть разными - форма ввода, таблица с данными и т.п. Предположим, что мы находимся в форме ввода, на которую попали по ссылке form?id=123. Чтобы сменить язык надо выполнить два действия: - вызвать переключение языка switchLocale.do?locale=ru - обновить ту страницу, на которой мы находились Чтобы совместить оба действия к switchLocale.do добавляем еще один параметр cmd, который указывает на какой странице мы находимся, например, switchLocale.do?cmd=form&locale=ru. Контролер для switchLocale.do получит параметр cmd и выполнит redirect на form. Но какие параметры передавать он не знает, то есть id=123 потеряется. Поскольку формы ввода могут быть с разными параметрами, а switchLocale общий, то надо как-то уметь обрабатывать их все. Можно попробовать различные варианты с redirectAttributes.addFlashAttribute, но прежде чем изобретать велосипед может проще можно выполнить указанные ранее действия (выделил их жирным)?! Желательно пояснить не в общих чертах типа "использовать свойство сеанса", а с учетом уже выполненных стандартных спринговых настроек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2016, 12:03 |
|
||
|
Spring MVC локализация
|
|||
|---|---|---|---|
|
#18+
myaucha, судя по всему вам надо отказаться от обращения к Код: java 1. а обращаться к текущему url с текущими параметрами, добавляя к ним Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2016, 16:29 |
|
||
|
Spring MVC локализация
|
|||
|---|---|---|---|
|
#18+
Получилось следующее решение. Переходить на добавление locale к каждой форме не потребовалось JSP Код: html 1. 2. 3. 4. 5. 6. Controller Код: java 1. 2. 3. JS Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2016, 20:06 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=90&tid=2123805]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 350ms |

| 0 / 0 |
