Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30465586
  • 博文数量: 708
  • 博客积分: 12163
  • 博客等级: 上将
  • 技术积分: 8240
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 20:59
文章分类

全部博文(708)

分类: Java

2008-04-08 13:40:26

1、 struts-config下添加如下代码:

xml version="1.0" encoding="UTF-8"?>

DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "">

<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"

        "">

     

<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>

阅读(1608) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~