页面 和 Action 中如何获取 国际化资源文件的 value值 ?

如何在页面上 和 Action 类中访问国际化资源文件的  value 值


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 提交后


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值