博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMVC国际化配置和使用
阅读量:4988 次
发布时间:2019-06-12

本文共 5752 字,大约阅读时间需要 19 分钟。

下面是基于session的,springMVC国际花的一个例子:    

需求是

输入url:展示中文界面

http://localhost:8080/MySSM/user?lang=zh

输入url:  展示英文界面

http://localhost:8080/MySSM/user?lang=en

下面是我demo项目的例子使用:

1.工程结构:

2.springMVC配置文件中 国际化相关的配置:

View Code

注意我重新使用了自己的拦截器:com.cy.interceptor.LanguageInterceptor

因为原来的拦截器org.springframework.web.servlet.i18n.LocaleChangeInterceptor,浏览器必须要输入lang=en_US,lang=zh_CN,才能改变语言。但是觉得输入这么多麻烦,因为一般就认为zh中文,en英文了。

 

3.语言LanguageInterceptor.java:

我只是把LocaleChangeInterceptor源代码拷贝了一部分过来;做些修改,主要是:

localeResolver.setLocale(request, response, newLocale)设置语言了;

package com.cy.interceptor;import java.util.Locale;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.LocaleResolver;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import org.springframework.web.servlet.support.RequestContextUtils;/** * 语言拦截器 * @author CY * */public class LanguageInterceptor extends HandlerInterceptorAdapter{        /**     * Default name of the locale specification parameter: "locale".     */    public static final String DEFAULT_PARAM_NAME = "locale";    private String paramName = DEFAULT_PARAM_NAME;        public void setParamName(String paramName) {        this.paramName = paramName;    }    public String getParamName() {        return this.paramName;    }    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        Locale newLocale = getLocale(request.getParameter(getParamName()));        LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);                if (localeResolver == null) {            throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?");        }                localeResolver.setLocale(request, response, newLocale);                return true;    }        //根据language 获取Locale    public static Locale getLocale(String language){        Locale locale = new Locale("zh", "CN");        if(language!=null && language.equals("en")){            locale = new Locale("en", "US");        }                return locale;    }    }

4.如果想在controller中获取messages配置文件中的值怎么做呢?

下面是一部分代码:

import org.springframework.web.servlet.support.RequestContext;import org.springframework.web.servlet.support.RequestContextUtils;import java.util.ResourceBundle;@Controllerpublic class UserController {    private static Logger logger = Logger.getLogger(UserController.class);        @Autowired    private UserService userService;            /**     * 从国际化资源配置文件中根据key获取value  方法一     * @param request     * @param key     * @return     */    public static String getMessage(HttpServletRequest request, String key){        Locale currentLocale = RequestContextUtils.getLocale(request);        String lang = currentLocale.getLanguage();        ResourceBundle bundle = ResourceBundle.getBundle("messages_"+lang, currentLocale);        return bundle.getString(key);    }    /**     * 从国际化资源配置文件中根据key获取value  方法二     * @param request     * @param key     * @return     */    public static String getMessage2(HttpServletRequest request, String key){        RequestContext requestContext = new RequestContext(request);        String value = requestContext.getMessage(key);        return value;    }            @RequestMapping("/user")    public ModelAndView getUsers(HttpServletRequest request){        List
userList = userService.getUsers(); ModelAndView mv = new ModelAndView(); //从message中获取文字 //String showUserInfo = getMessage(request, "showUserInfo"); String showUserInfo = getMessage2(request, "showUserInfo"); mv.addObject("showUserInfo", showUserInfo); mv.addObject("userList", userList); mv.setViewName("user"); return mv; } }

5.jsp中使用spring:message code:主要是:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<spring:message code="userName"/>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:message code="userManage"/>

${showUserInfo}

View Code

6.messages_zh.properties和messages_en.properties配置:

userManage=userManagementuserName=usernameage=agephotoName=photo namephoto=photoaddUser=add usershowUserInfo=this is display user information
userManage=\u7528\u6237\u7BA1\u7406userName=\u59D3\u540Dage=\u5E74\u9F84photoName=\u7167\u7247\u540D\u79F0photo=\u7167\u7247addUser=\u589E\u52A0\u7528\u6237showUserInfo=\u8FD9\u91CC\u662F\u5C55\u73B0\u7528\u6237\u4FE1\u606F

 

效果:

 

 

 

 

 

 

-------------

 

转载于:https://www.cnblogs.com/tenWood/p/7535502.html

你可能感兴趣的文章
AWS机器学习初探(1):Comprehend - 自然语言处理服务
查看>>
分门别类总结Java中的各种锁,让你彻底记住
查看>>
leetcode 140. Word Break II ----- java
查看>>
表格table列宽度控制<colgroup>
查看>>
HDU2602——Bone Collector
查看>>
由书写strlen函数碰到的问题。
查看>>
例7-7+7-8
查看>>
设置滑动TabBar的显示和隐藏
查看>>
c#通过反射获取自定义属性
查看>>
学习Android过程中的一些博客或工具收集
查看>>
文件系统重要的数据结构
查看>>
线程的分离链接属性
查看>>
借自动化实现数据库的安全运维和跨界运维
查看>>
Linux中表示“时间”的结构体和相关函数
查看>>
资源解释为样式表,但转换为MIME类型text / html
查看>>
c++ ShellExecuteEx调用java打包的exe程序
查看>>
WCF(一)基础整理
查看>>
我的个人网站
查看>>
FormData自定义上传图片
查看>>
博客园客户端UAP开发随笔--自定义控件的左膀右臂
查看>>