如何在页面上 和 Action 类中访问国际化资源文件的 value 值
示例如下:
3. 三个国际化资源文件
4. Struts.xml 配置
5. JSP 页面
1 . 在 Action 类中. 若 Action 实现了 TextProvider 接口, 则可以调用其 getText() 方法获取 value 值
> 可以通过继承 ActionSupport 的方式 实现TextProvider接口。
2. 页面上
① 可以使用 s:text 标签;
② 对于表单标签可以使用表单标签的 key 属性值
> 若有占位符, 则可以使用 s:text 标签的 s:param 子标签来填充占位符
> 可以利用标签和 OGNL 表达式直接访问值栈中的属性值(对象栈 和 Map 栈)
<span style="font-weight: bold; font-size: 14px;"> </span><span style="font-size:14px;">//国际化资源文件中配置的格式
time=Time:{0}
//对应的页面显示样式
<s:text name="time">
<s:param value="date"></s:param>
</s:text>
------------------------------------
//国际化资源文件中配置的格式
time2=Time:${date}
//对应的页面显示样式
<s:text name="time2"></s:text></span>
示例如下:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我有来了,俺就是华丽丽的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
1.项目结构
2. 类:
person 类关键看birth 属性
package com.baidu.domain;
import java.util.Date;
public class Person {
private String username;
private String password;
private Date birth;
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Action类 TestI18nAction.java
注意看,在 Action 中是如何获取国际化资源文件的
package com.baidu.i18n;
import java.util.Arrays;
import java.util.Date;
import com.baidu.domain.Person;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
public class TestI18nAction extends ActionSupport implements ModelDriven<Person> ,Preparable {
private static final long serialVersionUID = 1L;
private Date date ;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String execute() throws Exception {
Date birth = person.getBirth();
date = new Date();
//1. 在Action 中如何访问国际化资源文件的value 值
String username = getText("username");
System.out.println(username);
//2.在Action 中 如何访问 带占位符 的国际化资源文件 使用国际化建议文件中的键 time 和time2
String time = getText("time",Arrays.asList(birth));
System.out.println(time);
String time2 = getText("time2",Arrays.asList(birth));
System.out.println(time2);
return "success";
}
private Person person;
@Override
public Person getModel() {
person = new Person();
return person;
}
@Override
public void prepare() throws Exception {
}
}
3. 三个国际化资源文件
TestI18nAction.properties
username=^_^UserName
password=^_^Password
submit=^_^Submit
time=^_^Time:{0}
time2=^_^Time2:${date}
TestI18nAction_zh_CN.properties
username=^_^\u7528\u6237\u540D
password=^_^\u5BC6\u7801
submit=^_^\u63D0\u4EA4
time=^_^\u65F6\u95F4:{0}
time2=^_^\u65F6\u95F42:${date}
TestI18nAction_en_US.properties
username=^_^UserName
password=^_^Password
submit=^_^Submit
time=^_^Time:{0}
time2=^_^Time2:${date}
4. Struts.xml 配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 配置全局的国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="nihao"></constant>
<package name="default" namespace="/" extends="struts-default">
<!-- 从indext.jsp页面转到 i18n.jps页面的 action 请求 -->
<action name="testI18n" class="com.baidu.i18n.TestI18nAction">
<result>/i18n.jsp</result>
</action>
<!-- in -->
<action name="i18ntest" class="com.baidu.i18n.TestI18nAction">
<result name="success" >/i18n.jsp</result>
<result name="input">/input.jsp</result>
</action>
</package>
</struts>
5. JSP 页面
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="testI18n"> Test I18n</a>
</body>
</html>
i18n.jsp
注意看页面是如何获取国际化资源信息的
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:debug></s:debug>
<center>
<br><br>
<s:text name="time">
<s:param value="birth"></s:param>
</s:text>
<br><br>
<s:text name="time2">
<s:param value="date"></s:param>
</s:text>
<br><br>
<s:form action="i18ntest">
<s:textfield name="username" key="username"></s:textfield>
<s:textfield name="password" key="password"></s:textfield>
<s:textfield name="birth" key="time" ></s:textfield>
<s:submit key="submit"></s:submit>
</s:form>
</center>
</body>
</html>
6. 效果
运行 index.jsp
点击 TestI18n 到,
输入 信息
点击Submit 提交后