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

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


1 . 在 Action 类中. 若 Action 实现了 TextProvider 接口, 则可以调用其 getText() 方法获取 value 值
> 可以通过继承 ActionSupport 的方式 实现TextProvider接口。 



2. 页面上

① 可以使用 s:text 标签

  对于表单标签可以使用表单标签的 key 属性值

> 若有占位符则可以使用 s:text 标签 s:param 子标签来填充占位符


  > 可以利用标签 OGNL 表达式直接访问值栈中的属性值(对象栈 和 Map 栈)

			    //国际化资源文件中配置的格式
				time=Time:{0}

				//对应的页面显示样式
				
					
				

				------------------------------------
				//国际化资源文件中配置的格式
				time2=Time:${date}
	
				//对应的页面显示样式
				

示例如下

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我有来了,俺就是华丽丽的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

1.项目结构

页面 和 Action 中如何获取 国际化资源文件的 value值 ?_第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 ,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 配置






		
	
	
	
		
		
		
		
			/i18n.jsp
		
	
		
		
		
		
			/i18n.jsp
			/input.jsp
		
		
	



5. JSP 页面

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>    
    




Insert title here


	 Test I18n


i18n.jsp

注意看页面是如何获取国际化资源信息的

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>




Insert title here


		
		







6. 效果

运行 index.jsp

页面 和 Action 中如何获取 国际化资源文件的 value值 ?_第2张图片


点击 TestI18n 到,

页面 和 Action 中如何获取 国际化资源文件的 value值 ?_第3张图片


输入 信息


页面 和 Action 中如何获取 国际化资源文件的 value值 ?_第4张图片

点击Submit 提交后

页面 和 Action 中如何获取 国际化资源文件的 value值 ?_第5张图片

你可能感兴趣的:(Struts2,国际化)