【Java EE】Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合开发--验证框架、国际化

在之前发表的 Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架 整合开发 的基础上加入验证框架和国际化,做法如下:
(一)验证框架
1、在 LoginAction.java 的并列位置建立文件 LoginAction-validation.xml
LoginAction-validation.xml
 1<?xml version="1.0" encoding="UTF-8"?>
 2<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 3<validators>
 4    <field name="username">
 5        <field-validator type="requiredstring">
 6            <param name="trim">true</param>
 7            <message>用户名不能为空</message>
 8        </field-validator>
 9    </field>
10    <field name="password">
11        <field-validator type="requiredstring">
12            <param name="trim">true</param>
13            <message>密码不能为空</message>
14        </field-validator>
15    </field>
16</validators>
2、效果截图

(二)国际化
1、创建国际化资源文件
在com.test.action包下建立两个包级别国际化资源文件package_en_US.properties和package_zh_CN.properties
package_en_US.properties


package_zh_CN.properties


2、LoginAction-validation.xml 验证框架配置文件的修改,使用key属性读取国际化资源文件,若所读取资源字段不存在则直接显示key信息
 1<?xml version="1.0" encoding="UTF-8"?>
 2<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 3<validators>
 4    <field name="username">
 5        <field-validator type="requiredstring">
 6            <param name="trim">true</param>
 7            <message key="name.requried"></message>
 8        </field-validator>
 9    </field>
10    <field name="password">
11        <field-validator type="requiredstring">
12            <param name="trim">true</param>
13            <message>${getText("pass.requried")}</message>
14        </field-validator>
15    </field>
16</validators>
其中第7行和地13行为显示国际化信息的两种写法,第13行的写法要求applicationContext-actions.xml中对应bean要有scope属性,否则会出错!

3、运行结果截图
浏览器字符编码为英文时:


浏览器字符编码为中文时:


4、applicationContext-actions.xml中bean——loginAction的配置scope="prototype"的作用:
strut2actionspring的配置文件中是单态的,所以每次返回的错误对象都是原来的!为了生成新的对象,在spring的配置文件中要加scope="prototype"。
根据以上第2点说明,我们先把LoginAction-validation.xml 中第13行改为<message key="pass.requried"></message>
若去掉scope="prototype"属性,则多次输入错误时将发生如下结果:

posted on 2009-07-01 15:41 intrl 阅读(1856) 评论(1)  编辑 收藏 引用 所属分类: JavaStruts2HibernateSpring

评论

# re: 【Java EE】Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合开发--验证框架、国际化 2012-03-13 20:58 qwe

我的校验不起作用。麻烦看看。
下面是log4j的输出

DEBUG AbstractAutowireCapableBeanFactory : Not autowiring property 'validatorContext' of bean 'com.opensymphony.xwork2.validator.validators.RequiredStringValidator' by name: no matching bean found
20:56:15,531 [http-8080-2] ERROR DelegatingValidatorContext$LoggingValidationAware : Validation error for username:dont null  回复  更多评论   

只有注册用户登录后才能发表评论。
<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

随笔分类(55)

随笔档案(34)

网址收藏

资源下载

随笔导航

搜索

最新评论

阅读排行榜

评论排行榜