struts2系列(四):struts2国际化的多种方式
一、struts2国际化原理
根据不同的Locale读取不同的文本。
例如有两个资源文件:
第一个:message_zh_CN.properties
第二个:message_en_US.properties
当Locale=zh_CN时,就去第一个文件查找;当Locale=en_US时,就去第二个文件查找。
二、简单方式实现国际化
1. 新建一个maven的web项目,项目结构如下:

2. 在src/main/java目录下新建两个国际化资源文件message_zh_CN.properties、message_en_US.properties,然后将各个key-value对添加到这两个文件中,key字段一定要统一
message_zh_CN.properties:
info=\u4FE1\u606F
info_not_empty=\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A
submit=\u63D0\u4EA4
message_en_US.properties:
info=information
info_not_empty=info not empty
submit=submit
3. 配置struts.properties文件,这个文件也是放在src/main/java目录下的
struts.cunstom.i18n.resources=message
struts.i18n.encoding=utf-8
struts.cunstom.i18n.resources=message是为了告诉程序,国际化资源文件是message开头命名的资源文件。这个需要在struts的xml文件里面配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!--告诉程序,国际化资源文件是message开头命名的资源文件。 -->
<constant name="struts.custom.i18n.resources" value="message" /> <package name="default" namespace="/" extends="struts-default"> </package> </struts>
4. Struts2的页面国际化,默认要走action才行,如果直接访问jsp文件,是没有国际化效果的,所以定义一个语言的LangAction,然后在struts.xml文件里面配置
LangAction:
package com.study.struts2.demo;
import com.opensymphony.xwork2.ActionSupport;
public class LangAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -5273948217476741834L;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
}
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!--告诉程序,国际化资源文件是message开头命名的资源文件。 -->
<constant name="struts.custom.i18n.resources" value="message" /> <package name="default" namespace="/" extends="struts-default"> <action name="lang" class="com.study.struts2.demo.LangAction">
<result name="success">index.jsp</result>
</action> </package> </struts>
5. 实现在index.jsp页面中的中英文切换
<%@ page language="java" pageEncoding="UTF-8"%>
<!--引入struts2的标签 -->
<%@ taglib prefix="s" uri="/struts-tags"%>
<body>
<!--中英文切换按钮 -->
<a href="lang.action?request_locale=zh_CN">中文</a>
<a href="lang.action?request_locale=en_US">English</a> <p>
<a href="<s:url action='hello'/>">Hello World</a>
</p> <!--struts2的取值标签 value="<s:property value="msg" />"输入正确的被保留 -->
<form action="hello.action">
<!-- 信息: -->
<s:text name="info"></s:text>
<input type="text" name="msg" value="<s:property value="msg" />" />
<s:property value="fieldErrors['msg'][0]" />
<br> <input type="submit" value="<s:text name="submit"></s:text>">
</form> <!--验证通过后显示 -->
<h2>
<s:property value="msg" />
</h2>
</body>
</html>
5. 在tomcat里面启动项目输入地址验证http://localhost:8080/TestStruts2
中文页面:

英文页面:

三、过滤器方式实现国际化
后续补充。。。。。
四、把Locale放到session里面,从session里面取出Locale作国际化
后续补充。。。。。
struts2系列(四):struts2国际化的多种方式的更多相关文章
- (Struts2学习系列四)Struts2指定配置文件
我们的每个action都在struts.xml里配置的话,就会出现很多的xml语句,单单一个struts.xml就会变得很大,所以我们会在struts.xml里使用include引入其他的.xml文件 ...
- Redis系列四 - 分布式锁的实现方式
前言 分布式锁一般有3中实现方式: 数据库乐观锁: 基于Redis的分布式锁: 基于ZooKeeper的分布式锁. 以下将详细介绍如何正确地实现Redis分布式锁. 可靠性 首先,为了确保分布式锁的可 ...
- HTML系列:js和css多种方式实现隔行变色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- struts2官方 中文教程 系列四:Action
先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列四:Action 即 http://www.cnblogs.com/linghaoxinpian/p/6905521.html 下载 ...
- Struts2第四天
Struts2第四天 昨天: 自定义的拦截器:继续methodFilterInterceptor,可以指定哪些方法需要拦截或者不拦截. Intercepters(配置拦截器),intercepter( ...
- 【SSH框架】之Struts2系列(二)
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联 1.Struts2常量配置 (1).Struts2默认常量配置文件路径,如下图: (2).Strut ...
- 【SSH框架】之Struts2系列(一)
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系 1.Struts2框架概述 (1).什么是Struts2 Struts2是一种基于MVC模式的轻量 ...
- Struts2 中的数据传输的几种方式
1. 如何将参数从界面传递到Action? 你可以把Struts2中的Action看做是Struts1的Action+ActionForm,即只需在Action中定义相关的属性(要有gette ...
- 【中间件】Struts2系列漏洞POC小结
#Struts2-045 ''' CVE-2017-5638 影响范围:Struts 2.3.5 – Struts 2.3.31,Struts 2.5 – Struts 2.5.10 触发条件:基于J ...
随机推荐
- Spring Security研究(2)-高级web特性
1, 添加 HTTP/HTTPS 信道安全 <http> <intercept-url pattern="/secure/**" access="ROL ...
- Spring @RequestParam乱码问题
在网上找了很多资料才找到解决的方法,通过URL传递命名参数,后台接收的却是乱码解决方法如下: 方法一:将接收的参数重新编码 @RequestMapping(value="/handle&qu ...
- GitHub开源:升讯威微信营销系统(第三方微信平台)完整源代码
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction 升讯威微信营销系统开发实践系列升讯威微信营销系统开发实践:(1)功能设计与架构设 ...
- 关于maven项目的一些报错问题
本文为自己记录的笔记略显粗糙后续会把遇到的问题追加进来.忘大神多指点 1.父工程红色感叹号 此类问题解决方法,一般打开pom文件查看红色标记处是否有报错,也就是看哪个jar包没有下下来.分为两种情况. ...
- CyclicBarrier的使用之王者荣耀打大龙
最近一直整并发这块东西,顺便写点Java并发的例子,给大家做个分享,也强化下自己记忆,如果有什么错误或者不当的地方,欢迎大家斧正. LOL和王者荣耀的玩家很多,许多人应该都有打大龙的经历,话说前期大家 ...
- [UIKit学习]06.懒加载,模型,自定义代码段,重写构造方法
懒加载 在get中加载,且只加载一次 - (NSArray *)shops { if (_shops == nil) { NSString *file = [[NSBundle mainBundle] ...
- 这是一名Java学者关于学习方向的建议
无可厚非,编程是一门艺术.但是辉煌的背后必须是一段辛苦的奋斗过程,而过程的引导方向就是最重要的一环.Java语言可谓是引领了编程的潮流,你会是怎样去学的呢? 这是一名Java学者的学习方向的建议 注: ...
- 翻译连载 | 第 9 章:递归(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- jenkins~集群分发功能的具体实现
前一讲主要说了jenkins分发的好处<jenkins~集群分发功能和职责处理>,它可以让具体的节点干自己具体的事,比如windows环境下的节点,它只负责编译,发布windows的生态环 ...
- SpringMVC——使用RequestDispatcher.include()和HttpServletResponseWrapper动态获取jsp输出内容
介绍本篇内容前,先抛出我遇到的问题或者说是需求!(精读阅读本篇可能花费您15分钟,略读需5分钟左右) 一:需求说明 有一个Controller有两个方法 第一个方法通过指定的路径和参数去渲染jsp内容 ...