В Spring MVC приложение поставляется с несколькими « LocaleResolver » для поддержки функций интернационализации или нескольких языков. В этом руководстве показана простая страница приветствия, отображается сообщение из файла свойств и изменяется языковой стандарт на основе выбранной языковой ссылки.
1. Папка проекта
Структура каталогов этого примера.
Изображение://wp-content/uploads/2010/08/SpringMVC-Internationalization-Folder.jpg[SpringMVC-Интернационализация-папка, название = "SpringMVC-Интернационализация-папка", ширина = 317, высота = 480]
2. Файл свойств
Два файла свойств для хранения английских и китайских сообщений.
welcome.springmvc = Happy learning Spring MVC
-
Welcome zh CN.properties **
welcome.springmvc = \u5feb\u4e50\u5b66\u4e60 Spring MVC
-
Примечание ** + Для UTF-8 или неанглоязычных символов вы можете закодировать его с помощью инструмента link://java/java-convert-китайские символы-в-юникод-с-native2ascii/[native2ascii]
3. Контроллер
Класс контроллера, здесь нет ничего особенного, все настройки локали настраиваются позже в файле конфигурации bean-компонента Spring.
package com.mkyong.common.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class WelcomeController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView model = new ModelAndView("WelcomePage"); return model; } }
4. Конфигурация пружины
Чтобы приложение Spring MVC поддерживало интернационализацию, зарегистрируйте два компонента:
-
1. SessionLocaleResolver Зарегистрируйте bean-компонент «SessionLocaleResolver», назвав его точно такими же символами « localeResolver ** «. Он разрешает локали, получая предопределенный атрибут из сеанса пользователя.
-
Примечание + Если вы не зарегистрируете «localeResolver», будет использоваться AcceptHeaderLocaleResolver ** по умолчанию, который разрешает локаль путем проверки заголовка accept-language в HTTP-запросе.
-
2. LocaleChangeInterceptor + Зарегистрировать перехватчик «LocaleChangeInterceptor» и связать его с любым отображением обработчика, которое должно поддерживать несколько языков. « ParamName ** » - это значение параметра, которое используется для установки локали.
В этом случае,
, welcome.htm? language = en - Получить сообщение из английской недвижимости
файл.
, welcome.htm? language = zh__CN - Получить сообщение из китайских свойств
файл.
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="language"/> </bean> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" > <property name="interceptors"> <list> <ref bean="localeChangeInterceptor"/> </list> </property> </bean>
Смотрите полный пример ниже mvc-dispatcher-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> <property name="defaultLocale" value="en"/> </bean> <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="language"/> </bean> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" > <property name="interceptors"> <list> <ref bean="localeChangeInterceptor"/> </list> </property> </bean> <!-- Register the bean --> <bean class="com.mkyong.common.controller.WelcomeController"/> <!-- Register the welcome.properties --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="welcome"/> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" > <property name="prefix"> <value>/WEB-INF/pages/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
5. JSP
Страница JSP содержит две гиперссылки для изменения локали вручную и использует spring: message для отображения сообщения из файла соответствующих свойств, проверяя локаль текущего пользователя.
-
WelcomePage.jsp **
<%@ page contentType="text/html;charset=UTF-8" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <html> <body> <h1>Spring MVC internationalization example</h1> Language : <a href="?language=en">English</a>|<a href="?language=zh__CN">Chinese</a> <h2> welcome.springmvc : <spring:message code="welcome.springmvc" text="default text"/> </h2> Current Locale : ${pageContext.response.locale} </body> </html>
-
Примечание ** $ \ {pageContext.response.locale} может использоваться для отображения локали текущего пользователя.
-
Предупреждение ** Не забудьте поместить текст «<% @ page contentType =» text/html; charset = UTF-8 ′ ′%> »вверху страницы, иначе страница может не отображать символы UTF-8 (китайские) должным образом.
7. Демо
Доступ к нему осуществляется через http://localhost : 8080/SpringMVC/welcome.htm , измените локаль, нажав на ссылку языка
-
1. Английский язык ** - http://localhost : 8080/SpringMVC/welcome.htm? Language = en
Изображение://wp-content/uploads/2010/08/SpringMVC-Internationalization-Example-1.jpg[SpringMVC-Интернационализация-пример-1, название = "SpringMVC-Интернационализация-Пример-1", ширина = 640, высота = 289]
-
2. Китайский язык ** - http://localhost : 8080/SpringMVC/welcome.htm? Language = zh__CN
Изображение://wp-content/uploads/2010/08/SpringMVC-Internationalization-Example-2.jpg[SpringMVC-Интернационализация-пример-2, название = "SpringMVC-Интернационализация-пример-2", ширина = 640, высота = 289]
Скачать исходный код
Загрузите его - ссылка://wp-content/uploads/2010/08/SpringMVC-Internationalization-Example.zip[SpringMVC-Internationalization-Example.zip](8 КБ)
Ссылка
Документация MVC LocaleResolver]
ссылка://тег/несколько языков/[несколько языков]ссылка://тег/spring-mvc/[spring mvc]