Пример интернационализации Spring MVC

В 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]