struts2国际化

1:什么是国际化?

国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

2:在什么样的状况下使用国际化?

国际化是指的多语言支持,比方说你登录一个系统后,页面上的标签可以默认显示中文,或者默认显示英文。国际化在web开发中比较常用,以便于不同母语的用户使用系统。

3:为什么使用国际化?

原因:因为语言种类繁多

国际化需要在原来的基础上添加需要的资源文件,现在要实现 中文和英文之间的转换为例

首先创建出两个资源文件,分别是message.properties 和message_cn.properties

message_cn.properties  如下:(英文)

register.page=HouserRent-User Register
register.title=New User Register
name=Name
password=Password
repassword=RePassword
telephone=Telephone
username=UserName
submit=Register Now

name.null=Name cannot be null

message.properties如下:(中文)

register.page=\u7528\u6237\u6CE8\u518C
register.title=\u65B0\u7528\u6237\u6CE8\u518C
name=\u59D3\u540D
password=\u5BC6\u7801
repassword=\u786E\u8BA4\u5BC6\u7801
telephone=\u7535\u8BDD\u53F7\u7801
username=\u7528\u6237\u540D
submit=\u7ACB\u5373\u6CE8\u518C

name.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A

之后再struts.xml中添加constant 国际化标签

<constant name="struts.custom.i18n.resources" value="message"></constant>

完成。

然后也可以提升约束的方法,利用xml文件,name不能为空进行约束,配置的是  languageActionvalidation.xml

<field name="name">
<!-- 不能为空 -->
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="name.null"/>
</field-validator>
</field>

具体代码如下:

准备界面:register.jsp

注:使用ognl表达式展示国际化!<s:text>,也可以放在<s:i81n>标签中。

<html>
<head>
<title><s:text name="register.page"></s:text></title>
</head>
<body>
<s:fielderror></s:fielderror>
<h2><s:text name="register.title"></s:text></h2>
<s:form action="loignAction">
<table>
<tr>
<td><s:text name="name" ></s:text></td>
<td><s:textfield name="name" key="name"></s:textfield><td>
</tr>
<tr>
<td><s:text name="password"></s:text></td>
<td><s:textfield name="password"></s:textfield></td>
</tr>
<tr>
<td><s:text name="repassword"></s:text></td>
<td><s:textfield name="repassword"></s:textfield></td>
</tr>
<tr>
<td><s:text name="telephone"></s:text></td>
<td><s:textfield name="telephone"></s:textfield></td>
</tr>
<tr>
<td><s:text name="username"></s:text></td>
<td><s:textfield name="username"></s:textfield></td>
</tr>
<tr>
<td colspan="2"><s:submit
value="%{getText('submit')}"></s:submit></td>
</tr>
</table>
</s:form>
</body>
</html>

在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> <!-- 在struts2.xml中配置指定资源文件的基名 -->
<constant name="struts.custom.i18n.resources" value="message"></constant>
<!-- 指定编码方案,如果想要转换国际化 必须指定为UTF-8 默认就是u8-->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- -->
<constant name="struts.ui.theme" value="simple"></constant>
<!-- 修改该文件,tomcat不用重启 -->
<constant name="struts.devMode" value="true"/>
<package name="default" namespace="/" extends="struts-default">
<action name="loignAction" class="cn.Action.languageAction">
<result name="success">/index.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>
</struts>

  创建Action类,并继承自ActionSupport类,重写execute(),封装对应的属性:

package cn.Action;

import java.util.ArrayList;
import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class languageAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String name;
private String password;
private String repassword;
private String telephone;
private String username; public static long getSerialversionuid() {
return serialVersionUID;
} public String getName() {
return name;
}
public String getPassword() {
return password;
}
public String getRepassword() {
return repassword;
}
public String getTelephone() {
return telephone;
}
public String getUsername() {
return username;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public void setRepassword(String repassword) {
this.repassword = repassword;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public void setUsername(String username) {
this.username = username;
} @Override
public String execute() throws Exception {
return SUCCESS;
}
}

  

最新文章

  1. c++容器
  2. 用SQL语句添加删除修改字段_常用SQL
  3. [MySQL] SQL_ERROR 1032解决办法
  4. POJ 2078 Matrix
  5. 利用LM神经网络和决策树去分类
  6. ORACLE临时表总结[转]
  7. ListView 复制到剪切板
  8. 篇5 python自动化测试应用-Selenium环境篇
  9. OpenTSDB-Querying or Reading Data
  10. C语言应用程序的内存图
  11. Ginger的第一篇博客
  12. 机器学习笔记之三-yolov3+win7+vs2017+gpu+opencv编译
  13. STM32F103C8架构
  14. SPOJ1557 GSS2 Can you answer these queries II 历史最值线段树
  15. Java常见的乱码解决方式
  16. 20165203 第6周《Java程序设计》学习
  17. threading.local()、多线程里全局变量锁
  18. P4093 [HEOI2016/TJOI2016]序列
  19. SPOJ - AMR11
  20. Datax官方笔记总结

热门文章

  1. 使用ServiceStack构建Web服务
  2. SSH实战 &#183; 唯唯乐购项目(中)
  3. 移动先行之谁主沉浮? 带着你的Net飞奔吧!
  4. javascript设计模式:策略模式
  5. iOS UITableView 与 UITableViewController
  6. 品牌营销:不要Beat,要逼格!
  7. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
  8. Redis集群案例与场景分析
  9. 更有效率的使用Visual Studio(二)
  10. 模拟实现Spring中的注解装配