struts中validator使用笔记【原创】

  关于在struts中使用validator,经过半天实践,有了些许体会(以struts1.2.7为例子)。
  步骤如下:
  (1)下载struts-1.2.7.zip,解压后,将webapps中的struts-examples.war解开,在WEB-INF文件夹中找到validator-rules.xml,还有WEB-INF\validator中的validation.xml。
  (2)我用的是eclipse3.1.1+MyEclipse4.0.3,在eclipse中新建一个myeclipse的web project,再add struts capabilities,选struts 1.2,把相应的struts框架需要的文件复制到web project中。
  (3)将步骤1中找到的2个xml文件复制到web project的WEB-INF文件夹下,然后在struts-config.xml中加上
None.gif < plug - in className = " org.apache.struts.validator.ValidatorPlugIn " >
None.gif        
< set - property property = " pathnames "  value = " /WEB-INF/validator-rules.xml,/WEB-INF/validation.xml " />
None.gif  
</ plug - in >
  (4)打开validator-rules.xml,可以看到在步骤3要添加的一段内容,下面还有一段如下:
# Struts Validator Error Messages
   errors.required
= { 0 } is required.
   errors.minlength
= { 0 } can not be less than { 1 } characters.
   errors.maxlength
= { 0 } can not be greater than { 1 } characters.
   errors.invalid
= { 0 } is invalid.

   errors.
byte = { 0 } must be a  byte .
   errors.
short = { 0 } must be a  short .
   errors.integer
= { 0 } must be an integer.
   errors.
long = { 0 } must be a  long .
   errors.
float = { 0 } must be a  float .
   errors.
double = { 0 } must be a  double .

   errors.date
= { 0 } is not a date.
   errors.range
= { 0 } is not in the range { 1 } through { 2 }.
   errors.creditcard
= { 0 } is an invalid credit card number.
   errors.email
= { 0 } is an invalid e - mail address.
  把这段复制到classes里的ApplicationResources.properties文件中。
  (5)建立一个form-bean,用MyEclipse很快的,不知道怎么做的话就此打住,去学好基本功。我用一个loginForm做例子,有2个属性:name和password。
  (6)打开validation.xml,去掉<form-validation>节中的所有内容,新加入
< formset >       
      
< form name = " loginForm " >
        
< field property = " name "  depends = " required " >
            
< arg0 key = " label.Name " ></ arg0 >
        
</ field >
        
< field property = " password "  depends = " email " >
            
< arg0 key = " label.password " ></ arg0 >
        
</ field >         
      
</ form >
  
</ formset >
  label.Name和label.password在ApplicationResources.properties文件中有定义。
  (7)在要进行验证的那个form中加入
onsubmit = " return validateLoginForm(this) "
关于后面这个validateLoginForm是validate+ ActionForm名称。再在要验证的页面加入
< html:javascript formName = " loginForm " />
  这里的formName,就是在validation中定义的<form name="loginForm">。
  (8)ok,发布后就可以看到效果了,是在客户端进行验证,错误是弹出式显示的。
   注意:ApplicationResources.properties中属性值定义成中文会使得验证失效,具体原因是jsp页面需要加上
<% @ page language = " java "  contentType = " text/html; charset=UTF-8 " %>
  最重要的是那个charset。
  (9)客户端验证还是不怎么保险,ok,现在弄个服务器端验证。
  (10)上面用MyEclipse定义form-bean的时候,自动生成了一个 ActionForm,在struct-config.xml中,可以在form-bean一节中找到type属性指向这个 ActionForm,把它改一下,变成:
None.gif < form - bean name = " loginForm "  type = " org.apache.struts.validator.DynaValidatorForm "   >
None.gif        
< form - property name = " name "  type = " java.lang.String " ></ form - property >
None.gif        
< form - property name = " password "  type = " java.lang.String " ></ form - property >
None.gif    
</ form - bean >
  这样, 执行的时候会动态生成 ActionForm,可以把原来的ActionForm删除了。然后,修改相应的Action类,里面自己定义的ActionForm要换成DynaValidatorForm,取属性的方法也变为(form).get("属性名称")。
  再到相应的jsp页面把onsubmit部分删除,此外,还要删除<html:javascript 部分。
  (11)ok,发布后就可以看效果了,验证部分的代码,客户端是看不到了,错误信息直接跟在输入框后面,笔弹出式的要好,问题就是服务器端的负担加重了,但是我认为这是必要的,客户端的验证不保险。
  除了上面的2种方法外,在struts中应用validator还有方法, ActionForm还可以继承别的类实现验证,这里就不说了,上面的2种是比较简单的。

转载于:https://www.cnblogs.com/zxub/archive/2005/11/06/270168.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值