Struts2 国际化与数据验证


国际化与本地化:
Java 语言中使用Unicode字符集,为我们建立国际化的Web应用奠定了基础;

国际化:就是使程序不做任何的修改情况下,就可以在不同的国家或地址和不同语言环境下,按照当地的语言和格式习惯显示字符;I18N
本地化:一个国际化程序,当它运行在本地机器上时,需要根据本地机器的语言和地区设置显示相应的字符,这个过程为L10N;

两个主要类:
java.util.Locale类 java.util.ResourceBundle 抽象类

Locale类:两种常用构造方法:
public Locale(String languages)
public Locale(String language,String country)
language : 表示语言,取值为 ISO-639 定义的小写的、两个字母组成的语言代码;
country :表示国家或地区,取值由:ISO-3166 定义的大写的、两个字母组成的代码;
ISO-639 常用代码: ISO-3166 国家和地区代码
Chinese zh China CN
English en United States US
German de Great Britain GB
French fr Canada CA
Japanese ja Germany DE
Korean ko Japan JP
Korea KR
Taiwan TW
Hongkong HK
案例:
Locale locale = new Locale("en","GB"); //应用与英国的Locale

消息格式化:
使用java.text.MessageFormat 类的静态方法format(),用来格式化带参数的文本,可替换占位符;
一般使用默认的Locale,如果要使用特定的Locale , 需要构造一个MessageFormat 对象
MessageFormat mf = new MessageFormat(greeting,locale);
String msg = mf.format(new Object[]{"xiaofang",new Date()});
消息文本中的数字占位符将按照Object[]数组元素的顺序而被替换;

Struts2 中的国际化:
配置资源文件:Struts2 强调的使各个组件之间的松散耦合,而各个组件之间都是通过配置文件来实现相互关联和交互;

配置资源文件常量:即配置框架的struts.custom.i18n.resources 常量,该常量定义了struts2 框架全局国际化资源的basename;

案例:配置常量 在struts.xml中进行配置:
<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
建立资源文件:
规则:basename_language_country.properties 建立不同语言环境的资源文件;

native2ascii MyResource.tmp MyResource_zh_CN.properties----将MyResources.tmp文件中的非ASCII 字符转换成Unicode编码保存
到MyResources_zh_CN.properties文件中


使用getText("key"); 可以在action中获取资源文件中的内容 ,包含获取带参数的资源文件内容;

访问国际化消息:
Struts2 主要提供了多种方式来访问资源文件中的本地化消息,以适应不同的场景:

在action 中访问本地化消息
String msg=getText("greeting",new String[]{"值1",值2}); // 不同类型加不同符号


在jsp页面中访问本地化消息
不带参数的:<s:text name="title"> 访问键为title 的消息字符串
带参数的:greeting={0},欢迎你进入管理界面今天使:{1}
<s:text name="greeting">
<s:param value="小贩">
<s:param value="new java.util.Date()"/>
</s:text>

在表单标签的属性中访问本地化消息
使用getText(); 方法获得消息字符串
<s:textfield name="user.username" label="%{getText('username')}"/>
使用表单标签的 key 属性来指定消息字符串的key
<s:textfield name="user.username" key="username"/>


在资源文件中访问本地化消息
email = 邮件地址
error.emal.invalid=${getText("email")}



Struts2 的输入验证:
对用户输入的数据验证分为两个部分: 一是验证数据的有效性,而是在用户输入了不正确的数据后向用户提示错误信息;

验证分为:客户端验证/服务器端验证
客户端验证:主要是通过JavaScript 脚本来实现
服务器端验证:编写java代码来对输入的数据进行验证;

使用valide()方法验证:在类ActionSupport中,只需将该方法重写;
addFieldError("username","用户名不能为空"); 这个方法执行后execure() 这个方法就不会执行;

执行完验证方法之后框架会自动的返回到input视图组件中;
<result name="input" >/reg.jsp</result>

<s:form/> 会自动的将异常信息显示该表单元素验证异常的信息,如果要显示异常信息可以加入<s:fielderror/>标签,
该标签会显示所有的异常信息;


基于框架的输入验证:
1、使用字段验证的输入验证
2、使用非字段的输入验证

1、使用字段验证,就是建立一个特性的验证规则文件xml文件;规则:Action 名称-validation.xml
文件内容见:RegAction-validation.xml

2、非字段验证:
<validators>
<validator type="requiredstring">
<param name="fieldName">username</param>
<message>..
</validator>
</validators>

输入验证的国际化信息:reg.error.required.username 为资源文件中的 key==键
<validators>
<validator type="requiredstring">
<param name="fieldName">username</param>
<message key="reg.error.required.username"></message>
</validator>
</validators>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值