随笔 - 1162  文章 - 0  评论 - 16  阅读 - 59万 

一、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 国际化信息传递进去。

posted on   格物致知_Tony  阅读(233)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示

目录导航