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 { } }
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}
<?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>
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 提交后