validator框架

struts中使用validate框架主要就是以下几个步骤:

1formbean

·validateForm 和 validateActionForm  (不要重写里面的validate方法)

2struts-config.xml

·主要就是加入插件,来整合validate

·设置js在页面的弹出短路

3validate的配置文件--validation.xml validator-rules.xml

·配置验证信息

·自己写个校验器

4,资源文件

·在资源文件中药注意的就是对于的validate的配置文件中的信息来写,一定要使key  相同

·errors  -

5,页面

·页面要注意使用国际化的时候,要使用的关键字是key , 和配置文件中的key名字相

·错误信息 <html:errors property > property里面的值和字段的名字相同

========formbean:

//使用了validate框架,在formbean中就不要再写validte方法

//如果是多个Action共用同一个formbean,只是对于里面的验证规则进行修改,则可以使用ValidatorActionForm

public class MyForm extends /*ValidatorForm*/ValidatorActionForm {

private String username ;

private String password ;

private String password2 ;

private String email ; 

private String birthday ;

private String idcard;

....(setter,getter方法)

}

========struts-config.xml配置文件

<struts-config>

  <form-beans>

   <form-bean name="registerForm" type="hwt.form.MyForm"/>

  <!-- 动态formbean,使用的DynaValidatorForm -->

   <form-bean name="dynaForm" type="org.apache.struts.validator.DynaValidatorForm">

   <form-property name="username" type="java.lang.String"/>

   <form-property name="password" type="java.lang.String"/>

   </form-bean>

  </form-beans>

  

  <action-mappings >

<action path="/regist" type="hwt.action.RegisterAction" name="registerForm" validate="true" input="/WEB-INF/page/register.jsp">

<forward name="success" path="/WEB-INF/page/success.jsp"/>

    </action>

    

    <action path="/update" type="hwt.action.RegisterAction" name="registerForm" validate="true" input="/WEB-INF/page/update.jsp">

<forward name="success" path="/WEB-INF/page/success.jsp"/>

    </action>

    

     <action path="/login" type="hwt.action.RegisterAction" name="dynaForm" validate="true" input="/WEB-INF/page/login.jsp">

<forward name="success" path="/WEB-INF/page/success.jsp"/>

    </action>

    

    <action path="/goRegistPage" forward="/WEB-INF/page/register.jsp"/>

    <action path="/goUpdatePage" forward="/WEB-INF/page/update.jsp"/>

    <action path="/goLoginPage" forward="/WEB-INF/page/login.jsp"/>

  </action-mappings>

  <message-resources parameter="hwt.resources.ApplicationResources"/>

  

  <!-- 这里便是alidate框架整合struts的关键步骤 -->

  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

    <set-property property="pathnames"

   value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>

  <set-property property="stopOnFirstError" value="true"/>

  </plug-in>

</struts-config>

========validator.xml 和 alidation-rules.xml

<form-validation>

    <formset>

<!-- 对于多个Action使用同一个form,在formbean中要继承alidatorActionForm -->

<!--动态表单-->

     <form name="dynaForm">

        <!-- 用户名 -->

<field property="username"

                    depends="required">

                <arg   key="prompt.username"/>

            </field>

          <!-- 密码 -->

            <field property="password"

                    depends="required, minlength,maxlength">

                <arg   key="prompt.password" position="0"/>

                <arg   key="${var:minlength}" name="minlength"

                   resource="false" position="1"/>

                <arg   key="${var:maxlength}" name="maxlength"

                   resource="false" position="1"/>

                <var>

                    <var-name>maxlength</var-name>

                    <var-value>15</var-value>

                </var>

                <var>

                    <var-name>minlength</var-name>

                    <var-value>3</var-value>

                </var>

            </field>

            </form>         

   <!--这里写的不是formbeanstruts-config.xmlformbean名字,而是actionpath

因为这两个action是同一个formbean

-->

     <form name="/update">

        <!-- 用户名 -->

<field property="username"

                    depends="required">

                <arg   key="prompt.username"/>

            </field>

          <!-- 密码 -->

            <field property="password"

                    depends="required, minlength,maxlength">

                <arg   key="prompt.password" position="0"/>

                <arg   key="${var:minlength}" name="minlength"

                   resource="false" position="1"/>

                <arg   key="${var:maxlength}" name="maxlength"

                   resource="false" position="1"/>

                <var>

                    <var-name>maxlength</var-name>

                    <var-value>15</var-value>

                </var>

                <var>

                    <var-name>minlength</var-name>

                    <var-value>3</var-value>

                </var>

            </field>

            

            <!-- 重复密码 -->

            <field property="password2"

                    depends="required, validwhen">

                 <!--validwhen的错误消息是required,所以这里我想使用自己的错误消息

                 不要忘了写name 指明是那个校验器 -->

                <msg key="errors.repeat" name="validwhen"/>

                <arg key="prompt.password2" position="0"/>

                <arg key="prompt.password" position="1"/>

         <var>

           <var-name>test</var-name>

           <var-value>(*this*==password)</var-value>

         </var>

            </field>

            

            <!-- email -->

            <field property="email"

                    depends="required, email">

                <arg key="prompt.email"/>

            </field>

            <!-- 出生日期 -->

            <field property="birthday"

                    depends="required, date">

         <arg0 key="prompt.birthday"/>

         <var><var-name>datePattern</var-name><var-value>yyyy-MM-dd</var-value></var>

     </field>

          </form>

          

        <form name="/regist">

        <!-- 用户名 -->

<field property="username"

                    depends="required">

                <arg   key="prompt.username"/>

            </field>

          

          <!-- 密码 -->

            <field property="password"

                    depends="required, minlength,maxlength">

                <arg   key="prompt.password" position="0"/>

                <arg   key="${var:minlength}" name="minlength"

                   resource="false" position="1"/>

                <arg   key="${var:maxlength}" name="maxlength"

                   resource="false" position="1"/>

                <var>

                    <var-name>maxlength</var-name>

                    <var-value>10</var-value>

                </var>

                <var>

                    <var-name>minlength</var-name>

                    <var-value>4</var-value>

                </var>

            </field>

            

            <!-- 重复密码 -->

            <field property="password2"

                    depends="required, validwhen">

                <msg key="errors.repeat" name="validwhen"/>

                <arg key="prompt.password2" position="0"/>

                <arg key="prompt.password" position="1"/>

         <var>

          <var-name>test</var-name>

          <var-value>(*this*==password)</var-value>

        </var>

            </field>

            

            <!-- email -->

            <field property="email"

                    depends="required, email">

                <arg key="prompt.email"/>

            </field>

            <!-- 出生日期 -->

            <field property="birthday"

                    depends="required, date">

         <arg0 key="prompt.birthday"/>

         <var><var-name>datePattern</var-name><var-value>yyyy-MM-dd</var-value></var>

     </field>

    

<!-- 自己写的一个validator -->

      <field property="idcard"

                    depends="required, idcard">

         <arg key="prompt.idcard"/>

     </field>

          </form>

</formset>

自己写个验证器:

1,--------------实现类----------------------

public class IdCardCheck {

  public static boolean idcardCheck(Object bean, ValidatorAction va,

        Field field, ActionMessages errors, Validator validator,

        HttpServletRequest request) {

        String value = null;

        //得到value

    value = ValidatorUtils.getValueAsString(bean, field.getProperty());

    

        if (value.length()!=18 && !isDigt(value)) {

            errors.add(field.getKey(),

                Resources.getActionMessage(validator, request, va, field));

            return false;

        } else {

            return true;

        }

    }

private static boolean isDigt(String value) {

int length = value.length();

for(int i = 0 ; i < length ; i++){

if (!Character.isDigit(value.charAt(i))) {

return false;

}

}

return true;

}

}

2,----------------在alidation-rules.xml里面的配置-----------------

<!-- 自己写的一个校验器 -->

<validator name="idcard"

            classname="hwt.idcardcheck.IdCardCheck"

               method="idcardCheck"

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

                  msg="errors.idcard"/>

3,-------------------使用 validator.xml中调用

<!-- 自己写的一个validator -->

      <field property="idcard"

                    depends="required, idcard">

         <arg key="prompt.idcard"/>

     </field>

============页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>

<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>

<html:javascript formName="/regist" method="jsFunction"/>

<!-- 使用js的话上面导入,不要忘了在form中写提交的方法,如果不想使用弹出的时全部弹出,

在struts-config.xml里面和validate整合的时候设置stopOnFirstError == true

 -->

<html:form action="/regist" method="post" onsubmit="jsFunction(this)">

<!-- 这里主要注意的是html:errors 里面的property就是formbean里面的字段值 -->

<bean:message key="prompt.username"/>:<html:text property="username"/><html:errors property="username"/><br/>

<bean:message key="prompt.password"/>:<html:password property="password"/><html:errors property="password"/><br/>

<bean:message key="prompt.password2"/>:<html:password property="password2"/><html:errors property="password2"/><br/>

<bean:message key="prompt.email" />:<html:text property="email"/><html:errors property="email"/><br/>

<bean:message key="prompt.birthday" />:<html:text property="birthday"/><html:errors property="birthday"/><br/>

身份证:<html:text property="idcard"/><html:errors property="idcard"/><br/>

<html:submit><bean:message key="button.confirm"/></html:submit> <html:reset><bean:message key="button.reset"/></html:reset>

</html:form>  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值