1.基本文件安装
1.1 从http://jarkarta.apache.org/commons/validator/ 下载commons validator的1.3版
1.2 http://springmodules.dev.java.net 下载springmodules 0.4。但只有springside所带的版本能够支持Commons Validator 1.2/1.3。
1.3 将下列文件添加到项目
*把上述两个jar加入到web-inf/lib
*在web-inf 增加 springside带的validator-rules.xml
*在javascript目录增加springside带的validator.jsp
1.4 修改applicationContext.xml
加validatorFactory节点和beanValidator节点
参照springside的applicationContext.xml
注意当前版本 validatorFactory只能写在applicationContext-*.xml而不能写在*-servlet.xml.
1.5 修改项目的i18N文件
参照/misc/i18n/messages_zh_CN.properties 的# -- validator errors --部分
1.6 修改bookstore-servlet.xml ,为controller注入beanValidator
<bean name="bookManagerController" class="org.springside.bookstore.web.BookManagerController" autowire="byName">
<property name="validators" ref="beanValidator"/>
</bean>
不过推荐把beanValidator改名为validators,默认注入。
1.7 复制springside自带的validator.xml 作为基础进行修改.注意文件里必须声明使用Commons Validator 1.3
2.使用
参照springside中图书管理的例子。因为需要在Client和Server Side同时使用,而且Server Side默认的ComanndName命名法为Domain类的小写如order, book, 所以Form-Name也取book, order.
2.1 定义validator.xml文件
严重BS validator.xml继承了struts只要 xml解释器方便,不管程序员劳动量的语法。相对的spring比它要好些。appfuse推荐用xdoclet,在pojo上annotation注释并生成validator.xml。
validator的类型和配置参数我没有一个很明确的文档,大家随便google。
另,validator项目时有升级,请留意版本间与语法的不同。其中key="book.name"是i18n的key name,也可以直接写中文key= "名称"。validator找不到名称对应的i18nkey时就会直接显示"名称"
<form-validation>
<formset>
<form name="book">
<field property="name" depends="required">
<arg position="0" key="book.name"/>
</field>
</form>
</formset>
</form-validation>
2.2 使用clientside javascript 校验
commons-validator唯一让我觉得可取的地方, 就是和Rife一样,可以在元数据一处设置校验规则,而在client,server两端同时应用了。
参考editBook.jsp
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<validator:javascript formName="book" staticJavascript="false"/>
<form name="book" οnsubmit="return validateBook(this)">
2.3 server side校验
只要把统一定义的beanValidator 设置给controller的validators变量即完成任务,剩下的就是spring multi-actionController或springside baseController的事情了。