Struts2 国际化详解

*.JSP中使用国际化资源

创建XXX_zh_CN.properties 配置文件 XXX可以任意(放在src目录下)

#user=用户名
#password=密码
user=\u7528\u6237
password=\u5BC6\u7801

对应*.jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<s:i18n name="struts.configuration.in_zh_CN" >
<html>
	<head>
		<title> Internationnal </title>
	</head>
	
	<body>
                <!-- text 标签在s:i18n标下面时候 将直接通过name属性获取消息 -->
		<s:text name="user" />
		<s:form>
			<!-- 表单标签在s:i18n标下面时候  表单标签key属性将会从国际化资源文件中加载 消息 -->
			<s:textfield name="users" key="user" /> 
			<s:textfield name="users" key="password" /> 
		</s:form>
		
	</body>
</html>
</s:i18n>

Action范围内使用国际化资源

Action类需要继承ActionSupport类

public class International extends ActionSupport{
	
	public String execute(){
		//通过ActionSupport getText()方法的支持 获取国际化资源文件中信息
		System.out.println("user:" + getText("user")); 
		return Action.SUCCESS;
	}
}

国际化资源文件 International_zh_CN.properties 注意 开头部分必须与action类名相同 且该文件放在 Action 同一个包下面

user=\u7528\u6237\u540Dwang
password=\u5BC6\u7801

*.jsp文件

                <s:text name="user" />
		<s:form>
			<!-- 表单标签在s:i18n标下面时候  表单标签 key属性将会从国际化资源文件中加载 消息 -->
			<s:textfield name="users" key="user" /> 
			<s:textfield name="users" key="password" /> 
		</s:form>

与前面用法相同 只是 不需要使用<s:i18n>标签了

 

包范围内国际化资源 应放在对应action包下 且该包下的所有action或者子包下Action都可以使用该国际化资源文件  其中命名格式为 package_zh_CN.properties  package 是固定的。(当特定action类的国际化资源与包范围内国际化资源同时存在的时候将优先使用特定的)

 

 

 

 

 

设置全局国际化资源文件(建议存放一些类型转换错误 ,上传文件错误等一些通用信息)

1,可以在struts.xml文件中进行配置(<constant name="struts.custom.i18n.resources" value="in" />  其中in 文件 src/in_zh_CN.properties)

2,也可以在struts.properties 文件中加如下语句

struts.custon.i18n.resources=in

 

国际化文件占位符的指定

资源文件:

hello={0} 你好 {1}

*.jsp 中使用该资源:

                <s:text name="hello">
			<s:param>大家</s:param>
			<s:param>world</s:param>
		</s:text>

Action类中使用:(getText()方法中第一个参数为资源文件中的key  第二个参数为一个String数组 各个元素为 各个占位符填充)

public String execute(){
		System.out.println("hello:" + getText("hello",new String[]{"wang" , "世界"}));
		return Action.SUCCESS;
	}

 

 

 

国际化资源文件也可以配置成如下形式

#配置成如下形式将不需要手动去填充占位符 该占位符将 通过表达式自动从 ValueStack中找
USER=欢迎: ${username} 用户 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值