首先就是要先把Spring里面的common的一些包放入于你的/WEB-INF/lib中.. 就是在%SPRING_HOME%/lib/jakarta-commons中的全部包了... 还有就是一个比较重要的spring-sandbox.jar这个包一定要放入你的lib中.. 因为我们的beanValidator和validatorFactory类都是在这spring-sandbox.jar中..
接下来就是我们要一个validator-rules.xml这一个我们比较常用的规则文件... 可以拷贝Struts中的validator-rules.xml到Spring中就可以了.. 里面有着required. minlength maxlength...等等之类的规则...
再下来就是validation.xml这一个文件了.. 相信用过Struts的朋友都知道吧..在这一个文件中定义了对FormBean中properties的验证... 那么在Spring中也是一样的..也可以说, 你可以在Spring中把在Struts中的validation.xml拷贝到Spring来用...
接下来就是在action-servlet.xml中进行validator的定义了.. <bean id="validatorFactory" class="org.springframework.validation.commons.DefaultValidatorFactory" init-method="init"> <property name="resources"> <list> <value>/WEB-INF/validation.xml</value> <value>/WEB-INF/validator-rules.xml</value><!--这个放你的validation.xml和validator-rules.xml--> </list> </property> </bean>
<bean id="beanValidator" class="org.springframework.validation.commons.BeanValidator"> <property name="validatorFactory"><ref bean="validatorFactory"/></property> </bean> 要注意的是..一定要有spring-sandbox.jar这一个包.. 因为org.springframework.validation.commons.BeanValidator和org.springframework.validation.commons.DefaultValidatorFactory 都是在这个包中..不然的话..你的app server会有error message说无法找到这两个类..
在validation.xml中定义了: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
<form-validation> <formset> <form name="user"> <field property="username" depends="required">
<arg0 key="user.username"/> </field> <field property="password" depends="required"> <arg0 key="user.password"/> </field> </form> </formset> </form-validation> 这一步跟你在Struts中定义的一样的....
然后就是把validator插入到我们的Action中: <bean id="myController" class="web.c.MyController"> <property name="commandName"><value>user</value></property> <property name="commandClass"><value>model.User</value></property> <property name="validator"><ref bean="beanValidator"/></property> <property name="formView"><value>middle</value></property> <property name="successView"><value>final</value></property> </bean> 要注意的是..这边的commandName中的value为user..必须与在validation.xml中form中name的属性一样..也就是 <property name="commandName"><value>user</value></property>与<form name="user">相对应...
然后就是要在jsp插入我们的这一个验证了.. 这一步也是跟在Struts中一样.. 在我们的jsp文件中加入: <html:javascript formName="user" staticJavascript="false" /> 这时候就应该要注意到我们的html:javascript一个标签了.. <%@ taglib uri="http://www.springframework.org/tags/commons-validator" prefix="html" %> 是要用到这一个..而不是<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %> 那一次...因为我是用了<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>这一个...然后就是老是出错.. 害得我查了一整天才发现的..晕啊...呵呵.......
所以总得来说..就是要注意下面几点: 1. 要记得加入spring-sandbox.jar这一个包和jakarta-commons文件夹下面的所有包.. 2. 要注意在validation.xml中的form name="user", 在action中<property name="commandName"><value>user</value></property>, 还有就是在jsp文件中的<html:javascript formName="user" staticJavascript="false" />要一致.. 3. 千万不要以为是<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>... 一定要用到<%@ taglib uri="http://www.springframework.org/tags/commons-validator" prefix="html" %>这一个标库.. 
|