• 第四节:SpringMVC 视图解析【4】JstlView 便捷的国际化功能


    一、JstlView 视图

      1、若项目中使用了 JSTL,则 SpringMVC 会自动把视图由 InternalResourceView 转为 JSTLView(断点调试,将 JSTL 的 jar 包增加到项目中,视图解析器会自动修改为 JSTLView)

      2、若使用 JSTL 的 fmt 标签则需要在 SpringMVC 的配置文件中配置国际化资源文件

      

      3、若希望直接响应通过 SpringMVC 渲染的页面,可以使用 mvc:view-controller 标签实现

       

    二、使用 JstlView 

      方式一:导包导入了 jstl 的时候会自动创建一个 jstlView,可以快速方便的支持国际化;

      方式二:在 InternalResourceceViewResolver 中添加配置

    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>

    三、JstlView 快捷的国际化功能

      支持国际化:

      JavaWeb 国际化步骤:

    1. 得到一个 Locale 对象
    2. 使用 ResourceBundle 绑定国际化资源文件
    3. 使用 ResourceBundle.getString("key"); 获取国际化配置文件中的值
    4. web 页面的国际化,fmt 标签库来做;
    

      

      使用 JstlView 后:

    1. 让Spring管理国际化资源文件
    2. 直接去页面使用 <fmt:message>
    

      

      1、配置国际化文件

    i18n_en_US.properties
    username=USERNAME
    password=PASSWORD
    loginBtn=SUBMIT
    
    -----
    i18n_zh_CN.properties
    username=用户名
    password=密码
    loginBtn=登录

      2、在 springmvc.xml 中配置jstlView 视图

        <!--可以导入 JSTL 包,fmt:message-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"></property>
            <property name="suffix" value=".jsp"></property>
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
        </bean>
    
        <!--  让SpringMVC管理国际化资源文件,配置一个资源文件管理器  id 必须是messageSource -->
        <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
            <!-- basename 指定基础名-->
            <property name="basename" value="i18n"></property>
        </bean>

      3、添加页面链接

    <a href="/toLoginPage">去登录</a><br>

      4、添加后端控制器

        @RequestMapping(value = "/toLoginPage")
        public String toLoginPage() {
            System.out.println("toLoginPage...");
            return "login";
        }

      5、跳转到登陆页面

        成功页面(/WEB-INF/views/success.jsp)使用fmt标签库

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <html>
    <head>
        <title>登录页</title>
    </head>
    <body>
    
    <form action="">
        <fmt:message key="username" /><input><br>
        <fmt:message key="password" /><input><br>
    
        <input type="submit" value='<fmt:message key="loginBtn" />'>
    </form>
    </body>
    </html>

    三、源码跟踪

      jstl标签 jar包(断点调试,这时的View对象就是JstlView)

      

       注意:

      ① 国际化一定要经过 SpringMVC 的视图解析流程,不能直接由 Tomcat 运行,SpringMVC 会创建一个 JstlView,快捷的支持国际化功能;

      ② 也不能使用 forward 前缀,使用 forward 进行转发,会使用 InternalResourceView,并且没有国际化信息;

      

       只有用了 createView() 方法才会把 locale 国际化信息传递进去。

      

  • 相关阅读:
    CMake 从文件路径中提取文件名
    std::multimap 按照key遍历---
    Windows / Linux 一件编译zlib库
    C++ 11 可变模板参数的两种展开方式
    cmake 生成VS项目文件夹
    C++ 利用文件流复制文件
    利用 getsockname 和 getpeername 来获取某一个链接的本地地址和远端地址
    Windows 用VS编译libevent源码
    揭示同步块索引(上):从lock开始
    C手写一个多线程,供java调用
  • 原文地址:https://www.cnblogs.com/niujifei/p/15566889.html
Copyright © 2020-2023  润新知