建立一个表单对象,进行国际化资源文件的配置操作
登录界面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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>登录界面</title>
</head>
<body>
<a href="language.action?request_locale=en_US">英文</a>
<a href="language.action?request_locale=zh_CN">中文</a>
<!--通过超链接来设置当前浏览器环境当中所设定的语言环境,然后将本地语言参数值对象提交给language对象,该action对象
在进行参数的接收之前将会触发i18n国际化资源过滤器对象,该过滤器对象根据当前请求对象当中的参数当中所设定的本地化语言
的参数值来加载对应的配置文件,然后在重新返回到当前的登录界面当中-->
<s:text name="login.form.head"/>
<br>
<!--当前表单对象当中的数据提交到指定的action当中之前将会被i18n国际化拦截器对象今星期拦截操作,拦截器将会根据当
前浏览器对象当中的语言环境来对指定的国际化资源配置文件对象进行加载操作-->
<s:form action="login" method="post">
<s:textfield name="username" key="login.form.username"/>
<s:password name="password" key="login.form.password"/>
<s:submit key="login.form.submit"/>
</s:form>
</body>
</html>
action登录界面:
package com.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
*
* @author Administrator
*
*/
public class LoginAction extends ActionSupport{
private String username;
private String password;
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;
}
@Override
public String execute() throws Exception {
/**建立一个数组对象,然后将username当中的属性值添加到数组对象当中去*/
String [] args={username};
/**获取当前环境对象当中的指定的字段信息*/
String message=this.getText("loginAction.message");
/**以键值对的方式来从当前所加载的资源配置文件当中获取指定关键值对象所对应的value值,并且向value值对象当中
* 传递一个动态的参数值进去*/
String message2=this.getText("loginAction.message2", args);
System.out.println(message);
System.out.println(message2);
ActionContext.getContext().getSession().put("message",message);
ActionContext.getContext().getSession().put("message2",message2);
return "success";
}
}
struts配置文件:(重点)
<?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>
<!--在常数标签对象当中对指定的国际化资源对象进行设置操作,另struts.custom.i18n.resources=LoginAction则表明
在当前项目当中对LoginAction资源文件进行绑定操作-->
<constant name="struts.custom.i18n.resources" value="LoginAction"/>
<package name="default-package" namespace="/" extends="struts-default">
<action name="login" class="com.action.LoginAction">
<result name="success">/success.jsp</result>
</action>
<!--当表单对象当中所进行提交操作的URL地址为language.action时,因为在language标签对象当中没有进行指定的action
类对象的设置操作,所以将会去自动的对struts-default.action对象进行调用执行,且该对象当中的execute方法将会返回一个
success视图对象-->
<action name="language">
<result name="success">/login.jsp</result>
</action>
</package>
</struts>
资源配置文件(重点):
loginAction_zh_CN.properties
login.form.head=\u8868\u5355\u767B\u5F55
login.form.username=\u7528\u6237\u540D
login.form.password=\u5BC6\u7801
login.form.submit=\u63D0\u4EA4
loginAction.message=\u60A8\u5DF2\u7ECF\u8FDB\u5165\u7CFB\u7EDF
success.info=\u6B22\u8FCE\u8BBF\u95EE\u7CFB\u7EDF
loginAction.message2=\u60A8\u5DF2\u7ECF\u8FDB\u5165\u7CFB\u7EDF,{0}!
success.info2=\u6B22\u8FCE\u8BBF\u95EE\u7CFB\u7EDF\uFF0C{0}!
loginAction_en_US.properties
login.form.head=login form
login.form.username=your name:
login.form.password=your password:
login.form.submit=login button:
loginAction.message=you are in system
loginAction.message2=you are in system,{0}!
success.info=welcome to system
success.info2=welcome to system,{0}!
文件的目录结构: