`

关于Spring中Commons Validator的使用说明

阅读更多
关于Spring中Commons Validator的使用说明



spring的validate验证需要两个bean(ValidatorFactory、BeanValidator)及两xml文件(validator-rules.xml、validation.xml)的支持,ValidatorFactory用于制造BeanValidator,后者则是在程序中执行校验的控制bean。Validatorrules.xml中定义了各种验证的规则,如字段不为空,字段输入值必须为整数等等。Validation.xml中则定义了那些bean及bean中的哪些属性字段需要验证,使用哪些验证规则。validate 分为两级验证,客户端验证(javascript)和服务器端验证。以下是使用validate的步骤:

1.       在配置文件中声明ValidatorFactory 和 BeanValidator:



<bean  id="validatorFactory" class="org.springmodules.commons.validator.DefaultValidatorFactory"> -----①

             <property name="validationConfigLocations"> -----②

                <list>

                      <value>/WEB-INF/validator-rules.xml</value>

                      <value>/WEB-INF/validation.xml</value>

                 </list>

             </property>

        </bean>

        <bean id="beanValidator"

class="org.springmodules.commons.validator.DefaultBeanValidator"> -------③

             <property name="validatorFactory">

                     <ref bean="validatorFactory" />  --------④

             </property>

</bean>



①     声明validatoFactory 这里我们使用spring 的DefaultValidatorFactory

②     定义其validationConfigLocations 属性,将validator-rules.xml和validation.xml传入

③     声明beanValidator 这里我们使用spring的DefaultBeanValidator

④     在其属性中指明要使用的validatorFactory 。这里我们使用刚刚定义的validatorFactory



2.       在需要进行验证的controller(即要使用form表单或者command的controller)中声明validate。



<bean id="xxxxController" ……>

<property name="commandName" value="userCommand"/>  -----①

<property name="commandClass" value="com.resoft.User"/>   -----②

<property name="validator" ref="beanValidator"/>   -------③

     ……

</bean>



①     commandName 用于指明需要验证的 command的名字,这个名字必须和 validation.xml中<form name=" xxxxx "> 所写的名字保持一致。

②     commandClass用于指定这个command的类型。其必须与你jsp提交的form最后形成的command类型相一致。

③     声明该controller使用validator,这里将我们刚刚定义的beanValidator传入进去。



3.       在validation.xml文件中,定义你要校验的formbean(或者说是command) ,定义这个bean中有哪几个field需要验证,使用何种规则验证。(注意:这里定义的form name 必须和前面controller中定义的commandName保持一致)以下是几种常用的验证示例:



<form-validation>

<formset>

<form name=" userCommand "> -----①

               <field property="userId" depends="required"> -----②    

                   <arg0 key="用户代码" /> -------③                                          

               </field>   

                                                                

①    这里是定义要验证的bean的名字,要求去上面定义的 commandName 相同

②    这里定义要验证的bean属性为 userId ,使用规则为 required(不为空)

③    这里定义的是显示信息,arg0 表示位置 0 的显示信息,显示key 所标明的信息 (如果你还有多个信息就用 arg1,arg2 等)出错信息将会显示为:  用户代码 不能为空 





<field property="age" depends="required,integer,mask"> -----①

                   <arg0 key="年龄" />

                   <msg name="mask" key="errors.negative"/> -----②

                   <var>

                      <var-name>mask</var-name>

                      <var-value>^[1-9]</var-value> -------③

                   </var>

        </field>



①   mask 标记验证,使用正则表达式来约束表单输入值。(如:只能输入数字,字母或指定的字符)

②   msg 标签用来定义 验证规则和出错信息的关联,这里表示当出现 mask 校验失败时,显示 errors.negative指明的信息。

③      整个<var>标签就是用来定义具体的规则的,如<var-name>mask</var-name>指明是用于mask的规则,<var-value>^[1-9]</var-value> 表示只允许1-9这几个数字开头。

所以上面验证信息是年龄字段不可以为空,必须为整数,而且必须为1-9开头 也就杜绝了负数和零的情况。

          

               <field property="birthday" depends="required,date"> -----①

                  <arg0 key="生日" />

                  <var>

                       <var-name>datePatternStrict</var-name> -----②

                       <var-value>yyyy-MM-dd</var-value>  -----③

                   </var>

        </field>

        </formset>



①   使用“date”加入对日期的格式的校验

②         开始定义日期格式,var-name 必须写为 datePatternStrict

③         定义你希望的日期格式如:yyyy-mm-dd  yy/mm/dd 等等都可以。





<field property="startDate" depends="required,date">

              <arg0 key="开始日期" />

              <var>

                   <var-name>datePatternStrict</var-name>

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

                </var>

       </field>

       <field property="endDate" depends="required,date,compareTwoField"> -----①

              <arg0 key="结束日期" />

              <arg1 key="开始日期" />  -----②

              <var>

                   <var-name>datePatternStrict</var-name>

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

            </var>

            <var>

               <var-name>secondField</var-name>  -------③

               <var-value>startDate</var-value>

            </var>

       </field>



①         这里演示的是两个日期的验证,要达到开始日期不能晚于结束日期,加入compareTwoField 验证规则

②         定义第2个显示参数agr1 “开始日期”

③         加入一个var 其var-name 为secondField(这个是在程序中写死的,必须写为secondField)

④         var-value 定义为开始日期的属性名,如在本例中为 startDate



注:compareTwoField 是我们自己编写的一个校验规则,用于比较两个字段值大小。



4.  在jsp页面中定义错误信息显示语句:



<spring:bind path="tableCrashDO.*">   -----①

    <c:if test="${not empty status.errorMessages}">

    <div class="error">  

        <c:forEach var="error" items="${status.errorMessages}">

            <c:out value="${error}" escapeXml="false"/><br />

        </c:forEach>

    </div>

    </c:if>

</spring:bind>



①      这里的path 必须要与传入该 jsp 的bean的名字一样。如传入该jsp的数据bean 叫tableCrashDO,path就应该写为tableCrashDO.*。



5. 使客户端产生javascript代码:



<v:javascript formName="tableCrashDO"    -----①

staticJavascript="false" xhtml="true" cdata="false"/>

<script type="text/javascript" src="<c:url value="scripts/validator.jsp"/>"></script>



①      v:javascript 标签是spring的标签,定义在spring-commons-validator.tld 。其中formName必须与validation.xml中form的name保持一致。



如此以来,基本上可以算完成了validate的验证配置。

(特别注意: controller 中的commandName; validation.xml中的form name; jsp中v:javascript标签的formName三者必须保持一致。)




Trackback: http://tb.donews.net/TrackBack.aspx?PostId=788907
分享到:
评论

相关推荐

    实战springmodules commons validator

    其中commons validator是一个可配置的验证框架,使用方式和工作原理都和struts用的ValidatorPlugIn一样。它可以通过配置生成js在客户端验证, 也可以配合具有验证功能的spring controller实现客户端验证. 本下载文件...

    common-validator

    一款灵活易用的JavaScript验证构件

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    Spring 2.0 开发参考手册

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    struts spring lib

    commons-validator.jar jakarta-oro.jar jdom.jar jstl.jar junit.jar log4j-1.2.8.jar naming-factory.jar poi-3.0-alpha2-20060616.jar poi-contrib-3.0-alpha2-20060616.jar poi-scratchpad-3.0-alpha2-20060616....

    Spring API

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    spring chm文档

    6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. ...

    spring和hibernate__jar包,详细说明看jar包列表

    hibernate-validator-4.0.2.GA.jar httpclient-4.1.2.jar httpcore-4.1.2.jar jackson-core-asl-1.7.2.jar jackson-core-asl-1.9.9.jar jackson-jaxrs-1.7.2.jar jackson-jaxrs-1.9.9.jar jackson-mapper-asl-1.7.2....

    spring+struts+hibernate+dwr+jstl做的实例

    以用户管理为例,结合spring struts hibernate dwr jstl做的实例,struts hibernate dwr 与Spring完全结合,实现用户列表、信息增、删、改、查...validator.jar jakarta-oro.jar commons-beanutils-1.7.0.jar

    cxf(jax-ws)+spring+hibernate整合包

    antlr-2.7.6.jar,antlr-2.7.7.jar,aopalliance-1.0.jar,asm-3.3.1.jar,cglib-2.2.jar,classes12.jar,commons-codec-1.7.jar,commons-collections-3.1.jar,commons-collections-3.2.1.jar,commons-lang-2.6.jar,...

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在struts2中spring的插件上了,没有从MyEclipse...

    SSH(Spring Struts Hibernate)所有jar包

    1.1.24-20120814.043343-7.jar freemarker-2.3.19.jar hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.2.1.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar hibernate-validator-5.1.0.Final....

    ssm(spring+spring mvc+mybatis)电子商城项目

    工具类:Apache Commons、Jackson 2.2、fastjson 1.2.20 前端技术 JS框架:Jquery 表格插件:Bootstrap Table 表单验证插件:BootstrapValidator 日期选择插件:Datepicker for Bootstrap 弹层组件:Layer 数据图表...

    ssm(spring+spring mvc+mybatis)高仿小米电子商城项目实例

    ssm(spring+spring mvc+mybatis)高仿小米电子商城项目实例 开发环境:Eclipse ,JDK 1.8 ,Tomcat7 技术选型: 后端技术 核心框架:Spring Framework 4.3.5 视图框架:Spring MVC 4.3.5 任务调度:Spring + ...

    Spring主流jar包大全

    hibernate-validator-5.2.4.Final.jar imgscalr-lib-4.2.jar jackson-annotations-2.2.3.jar jackson-core-2.2.3.jar jackson-databind-2.2.3.jar jackson-module-jaxb-annotations-2.2.3.jar javaGeom-0.11.1.jar ...

    Spring 系列 jar 包

    包括 :Spring 的20个 jar、Spring MVC 所需的 commons 相关 jar 以及 Hibernate-Validator 的 jar

    ssh整合时常用的jar包

    4.信息校验包: commons-validator-1.3.0.jar 5.ajax使用时需要加载的包:dwr.jar 6.freemarker使用时加载的包:freemarker-2.3.8.jar 7.hibernate使用加载的包:hibernate3.jar 8.数据库mysql使用时加载的包:...

    JSF与Shale开发用包

    其中包含:shale-core.jar commons-beanutils.jar commons-chain.jar commons-codec.jar commons-collections.jar commons-digester.jar commons-el.jar commons-fileupload.jar commons-...

    Spring+SpringMVC+Ehcache+Shiro+BootStrap企业级开发平台

    【B1】Spring+SpringMVC+Ehcache+Shiro+BootStrap企业级开发平台源码下载 内置功能 用户管理 角色管理 菜单管理 字典管理 部门管理 附件管理 参数管理 连接池监视 日志管理 技术选型 1、后端 核心框架...

Global site tag (gtag.js) - Google Analytics