• SpringMVC 国际化问题


    1、首先在src文件下添加3个properties文件

      a、message.properties

    1 message.username=UserName
    2 message.password=Password

      b、message_en.properties

    1 message.username=UserName
    2 message.password=Password

      c、message_zh.properties

    1 message.username=u7528u6237u540D
    2 message.password=u5BC6u7801

    2、配置spring-mvc.xml文件

    1 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    2     <!-- 指定文件基名 -->
    3      <property name="basename" value="message"/>
    4      <!-- 当没有找到资源文件时,用这基名文件 -->
    5      <property name="useCodeAsDefaultMessage" value="true" />    
    6  </bean>

      这里配置属性userCodeAsDefaultMessage=true。意思当在其他语言区域里,没有找到对应的国际化文件。比如日语区、韩语区等。默认使用message.properties文件。当为false时,显示有问题。

    3、配置Controller

     1 @Controller
     2 public class UserController {
     3 
     4     @RequestMapping("/updateUser")
     5     public String update(){
     6 
     7         return "success";
     8     }
     9     
    10 }

    4、Jsp页面

      要做jsp页面中使用国际化信息。需要添加一个fmt标签。该标签在JSTL标签表中。添加方式

    1 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

      index.jsp

     1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
     2 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
     3 
     4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     5 <html>
     6   <head>
     7     <title>My JSP 'hello.jsp' starting page</title>
     8   </head>
     9   
    10   <body>
    11     
    12     <fmt:message key="message.username"/><input type="text" name="username" /><br/>
    13     <fmt:message key="message.password"/><input type="text" name="password" /><br/>
    14   </body>
    15 </html>

      hello.jsp

     1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
     2 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
     3 
     4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     5 <html>
     6   <head>
     7     <title>My JSP 'hello.jsp' starting page</title>
     8   </head>
     9   
    10   <body>
    11     
    12     <fmt:message key="message.username"/><input type="text" name="username" /><br/>
    13     <fmt:message key="message.password"/><input type="text" name="password" /><br/>
    14   </body>
    15 </html>

      我们通过url访问success.jsp页面。

      访问地址:http://localhost:8080/springmvc-1/updateUser

     

      我们访问index.jsp页面http://localhost:8080/springmvc-1

      结果出现这样的结果

    为什么JSP页面都是一样的。为什么结果不一样呢?

      原因是index.jsp页面可以直接被访问到,而success.jsp页面在WEB-INF下面,不能够直接访问,需要通过servlet转发的方式才够访问。在SpringMVC中,DispatcherServlet前端控制器,拦截了所有请求,对http://localhost:8080/springmvc-1/updateUser访问。交个SpringMVC去处理。而在spring-mvc.xml配置了ResourceBundleMessageSource,所以在success页面中可以使用国际化信息。

       综上所述:要使用基于页面的国际化信息,需要使用转发的方式才能生效。

     

      

  • 相关阅读:
    正向代理和反向代理
    轮询和长轮询
    偏函数 方法与函数的区别
    pipreqs 生成项目依赖的第三方包
    git安装与使用
    自动生成接口文档
    上线
    Android APK加固-完善内存dex
    Android APK加固-内存加载dex
    替换ClassLoader
  • 原文地址:https://www.cnblogs.com/caoyc/p/5637865.html
Copyright © 2020-2023  润新知