清除struts-validator框架在页面生成的大量js代码
时间:2006-07-07 来源:softiger
清除struts-validator框架在页面生成的大量js代码
2004-04-15, by rainy14f
struts自带的validator框架的易用性确实不错,但是它的客户端验证(JS验证)却有令人诟病的一点,就是它会在每个使用js验证的页面都生成大幅的js代码。看到这种情况,恐怕本来有兴趣试一试的人,也会望而止步了吧。如果是我们自己写的话,是一定会把这么多的js写在一个.js文件里的。但是我们可以自己手动来修改它的js验证框架,使它符合我们的要求。
修改很简单,分为3个步骤:
1、精简valiator-rules.xml文件,去除不需要的验证规则
validator-rules文件里定义的验证规则可谓大而全,可是并不是每个应用都会用到全部这些规则的,我们可以把不会用到的验证规则从<validator>到</validator>之间(也包括这两个标记)清除掉,以求视野清晰。比如说,我现在只用到name是required的验证规则,来验证非空,那我就可以只保留<validator name="required">...</validator>,其他都可以删掉了。
2、将validator-rule.xml中定义的验证代码移到一个单独的.js文件中去
最关键的一步就是要防止struts在每个页面都生成大量js代码。这些代码就定义在<javascript>标记里。我们把这些标记中的js都移动到一个新建的validate.js文件里,但是不能使<javascript><![CDATA[与]]>之间为空,必须要填写东西在里面,否则框架会认为js被禁用而直接转到服务端验证。我修改后的required的验证就是下面这样:
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
msg="error.required">
<javascript><![CDATA[
<!--this function is replaced by validate.js-->
]]>
</javascript>
3、在页面的<head>标签之间添加新的js文件的链接
这一步就不用多说了。
相信谁都会写,
好了,大功告成了!
这下,页面就干净了!