免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1059 | 回复: 0
打印 上一主题 下一主题

struts动态表单的验证方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-08 13:40 |只看该作者 |倒序浏览

1、 在struts-config下添加如下代码:
xml version="1.0" encoding="UTF-8"?>
DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
struts-config>
form-beans >
    form-bean name="myForm" type="org.apache.struts.validator.DynaValidatorForm">
    form-property name="uid" type="java.lang.String"/>
    form-property name="password" type="java.lang.String"/>
    form-property name="name" type="java.lang.String"/>
    form-bean>
form-beans>
global-exceptions />
global-forwards />
action-mappings >
    action
      attribute="myForm"
      input="/user.jsp"
      validate="true"
      name="myForm"
      path="/user"
      scope="request"
      type="com.sailor.struts.action.UserAction"   
      >
      forward
        name="success"
        path="/view.jsp"
        redirect="true" />
      forward
        name="fail"
        path="/error.jsp"
        redirect="true" />
    action>
action-mappings>
message-resources parameter="com.sailor.struts.ApplicationResource_zh_CN"/>
      plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        set-property property="pathnames"
                      value="/org/apache/struts/validator/validator-rules.xml,
                             /WEB-INF/validation.xml"/>
      plug-in>
struts-config>

2 在WEB-INF下新建一个validation.xml
DOCTYPE form-validation PUBLIC
        "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
        "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
      
form-validation>
    formset>
       form name="myForm">
           field property="uid" depends="required">
              arg key="uid"/>
           field>
           
           field property="password" depends="required,maxlength,minlength">
              arg key="password"/>
              arg key="${var:minlength}" name="minlength" resource="false"/>
             arg key="${var:maxlength}" name="maxlength" resource="false"/>
             var>
                    var-name>minlengthvar-name>
                    var-value>6var-value>
             var>
             var>
                var-name>maxlengthvar-name>
                var-value>10var-value>
             var>
           field>
           
           
       form>
    formset>
form-validation>
3 在国家化标签中添加如下:

4 在user.jsp中添加
经过以上步骤就可以实现简单的用户身份验证。


所有的表单都是继承自ActionForm类,它有两个直接子类,一个是ValidatorForm类,一个是DynaActionForm类。ValidatorForm类还有一个子类是ValidatorActionForm类,这两个类都可以和Validator框架一起工作验证表单内部的数据,但是必须手动创建他们的子类,至于这两个类的区别,后面再说。DynaActionForm类就是可以动态配置表单的类了,但是它不能和Validator框架一起验证表单数据,还需要手动实现子类,并重写reset和validate方法验证表单数据,它也有子孙类DynaValidatorForm和DynaValidatorActionForm类,其中前者是后者的父类,这两个类就是可以动态配置表单并且可以和Validator框架一起工作验证表单数据的类。下面说说(Dyna)ValidatorFOrm和(Dyna)ValidatorActionForm的区别,它们的类名差了Action字样,区别就是Validator的验证时针对表单还是Action,不含有Action字样的类是完全针对表单进行验证,即使这个表单和多个Action关联,含有Action字样的类针对Action关联的表单进行验证。配置Validator的时候需要配置form标签,这个标签有个name属性,如果是针对表单验证,这里就写表单的那么属性,如果是针对Action验证,这就写Action的path属性。
动态表单需要编写任何代码,只需要配置struts-config.xml文件即可,下面是一个动态表单的例子:
form-beans>
    form-bean name="logonForm" type="org.apache.struts.validator.DynaValidatorForm">
      form-property name="username" type="java.lang.String"/>
      form-property name="pwd" type="java.lang.String"/>
    /form-bean>
/form-beans>
以上代码配置了一个包含连个属性的表单。
--------------------------------------------------------------------------------
validator-rules.xml文件配置验证规则,validation.xml文件配置表单的那些字段需要验证,并使用那些验证规则,下面是针对上面表单的验证配置:
form-validation>
formset>
    form name="logonForm">
    field property="username" depends="required,minlength">
      arg0 key="username" resource="false"/>
      arg1 name="minlength" key="${var:minlength}" resource="false"/>
      var>
        var-name>minlength/var-name>
        var-value>5/var-value>
      /var>
    /field>
    field property="pwd" depends="required,minlength">
      arg0 key="pwd" resource="false"/>
      arg1 name="minlength" key="${var:minlength}" resource="false"/>
      var>
        var-name>minlength/var-name>
        var-value>5/var-value>
      /var>
    /field>
/formset>
/form-validation>
数值在一定范围内
    field property="age" depends="required,intRange">
      arg0 key="age" resource="false"/>
      arg1 name="intRange" key="${var:min}" resource="false"/>
      arg2 name="intRange" key="${var:max}" resource="false"/>
      var>
        var-name>min/var-name>
        var-value>18/var-value>
      /var>
      var>
        var-name>max/var-name>
        var-value>36/var-value>
      /var>
    /field>
日期格式
    field property="date" depends="required,date">
      arg0 key="date" resource="false"/>
      var>
        var-name>datePattern/var-name>
        var-value>yyyy-MM-dd/var-value>
      /var>
    /field>
邮件格式
    field property="email" depends="required,email">
      arg0 name="required" key="email" resource="false"/>
      arg0 name="email" key="email" resource="false"/>
    /field>
Struts 1.2.7的validator-rules.xml文件原始配置和api有些出入,需要在某些规则的org.apache.struts.action.ActionMessages
字段类型后添加
org.apache.commons.validator.Validator
才能正常使用,
--------------------------------------------------------------------------------
自定义验证规则:
编写类文件,方法名必须是静态,而且注意线程安全,验证方法签名如下:
public static java.lang.Object validateXXX( java.lang.Object,
                                                                            org.apache.commons.validator.ValidatorAction,
                                                                            org.apache.commons.validator.Field,
                                                                            org.apache.struts.action.ActionMessages,
                                                                            org.apache.commons.validator.Validator,
                                                                            javax.servlet.http.HttpServletRequest);
Object 表示验证在此JavaBean对象上进行,相当于表单对象
ValidatorAction 表示当前所执行的 ValidatorAction
Field 被验证的字段对象,表但内的字段
ActionMessages 验证失败,新增ActionError对象到此对象中
HttpServletRequest 请求对象
然后在validator-rules.xml文件中插入验证规则,在validation.xml文件中使用验证规则。


body>
        html:form action="/reg" focus="uname" onsubmit="return validateRegForm(this)">
            uname : html:text property="uname"/>br/>
            email : html:text property="email"/>br/>
            html:submit/>html:reset/>
        /html:form>
        html:javascript formName="regForm"/>
    /body>


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/55983/showart_521877.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP