struts1动态验证框架

    验证通常可以在两个地方完成:一种在客户端,可以用Ajax;另一种在服务器端,在struts1中可以使用其提供的动态验证框架。

    网上关于动态验证框架的文章也很多。由于笔者还是新手,所以在实现的时候遇到了不少问题,本文在大体描述过程的同时,难免会出现漏洞,希望大家斧正。

 

1、将国际化配置加入到struts-config.xml文件中。

    struts中的动态验证框架与国际化联系得非常紧密。在出错的时候,动态验证框架显示的错误提示读取的正是国际化资源文件中的内容。所以在 struts-config.xml中要加入国际化的配置,<message-resources parameter="MessageResources" />。其中parameter的值是国际化资源文件的文件名(也可以称为国际化资源文件的basename)。

 

2、提供国际化资源文件。

 

    提供第1步所说的国际化资源文件。在src的目录下直接建立MessageResources.properties(当然也可以放在src下某个新建的目录下,如res文件夹下,此时,第1步中的parameter就要变成res.MessageResources),这个文件要提供错误信息。内容如下:

   

    注意,上面的国际化资源文件这种使用的值是经过jdk下的native2ascii.exe转换过的Unicode编码,内容分别为”用户名“,”密码 “,”是必须的“。之前在网上看到的文章中使用的都直接是汉字,但是笔者使用汉字时错误信息却出现了乱码,不知道哪出现了问题。读者可以试一下。

 

3、引入validator插件在struts-config.xml文件中。

 

    在struts-config.xml中加入如下代码

   

    这里的validator-rules.xml(可以在org.apache.struts.validator中获得)和validate.xml文件分别是struts自带的验证规则和自定义的验证文件。

 

4、提供validator-rules.xml和validate.xml文件。

 

    提供上面所说的规则文件,现将validator-rules.xml文件复制到WEB-INF目录下。

 

    在WEB-INF目录下新建文件validate.xml,加入如下内容

   

    form name为存取表单数据的form,其余的部分含义下面流程中将会说明。

 

5、修改struts-config.xml中的配置

 

    首先要将所用到表单的配置中form-bean中的type变为”org.apache.struts.validator.DynaValidatorForm“,之前我使用的是DynaActionForm。这里的DynaValidatorForm继承了DynaActionForm,并且实现了DynaBean,Serializable这两个接口。

 

    其次,要在对应的action中加入validate="true",以启用动态验证框架。同时要加入input属性(最好设为当前页面),用以指定出现错误时转向的页面,这样可以把错误提示信息输入到所指定的页面。

 

6、编写要进行验证的页面。

 

    我的程序里是一个登陆的页面

   

    这里用到了struts自带的标签,因此要在开始处加入引入标签的说明

   

 

7、运行程序,即可看到效果。

 

    下面说说整个流程,实属个人理解,欢迎大家拍砖。

 

    假如登陆的时候没有输入密码。当点击提交时,由于你在相应的action中设定了validate="true",那么动态验证框架就会根据 struts-config.xml中在第3步中加入的配置信息,通过validation.xml来验证你的输入。回头看一下第4步的配置,其中 property的值对应的就是登陆界面中html:text property的值,其中的depends则是验证规则,它是从validator-rules.xml中获取的。

 

    这时验证框架通过property="adminpassword"中depends="required"(是否为空),发现了输入为空,而 validator-rules.xml中validator name="required"这条验证规则就会通过msg="errors.required"要求返回错误提示信息,而这条错误提示信息是在 MessageResources.properties中配置的,即errors.required ={0},/u662F/u5FC5/u987B/u7684(其中{0}是一个占位符,用于动态添加信息,这里取到了 prompt.adminpassword = /u5BC6/u7801中adminpassword的值)。然后根据你在第5步设置的input,页面会跳转到相应页面(这里是当前页面),并在密码输入框后面加上"密码,是必须的"的字样。

 

    这样,动态验证框架就完成了它的验证工作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值