自Webwork2.2发布以后,Webwork验证机制就全部改由Ajax验证。验证的原理是一个需要验证的表单域在onblur时发送一次请求到服务器端进行验证,然后实时提醒。
我只好手写Javascript了。
到了Webwork2.2.2这个版本,有个好消息来了。WebWork验证重新支持客户端验证。
客户端验证的例子可见WebWork自还的例子“showcase”。使用客户端验证大体上跟以前的服务器端验证相似,只是多了一些步骤。
完整的有以下几个步骤:
一、编写XXXAction-alias-validation.xml--验证配置文件。
文件放在需要验证的Action类同一目录下,alias是可选项,如果有几个Action使用了同一个Action类。而你想对其中一个Action进行验证,那么alias就是那个Action的名字。
如:PersonAction.java,被editPerson,savePerson,deletePerson等Action使用到,而仅需要对savePerson这个动作来验证时,配置文件名字就是:PersonAction-savePerson-validation.xml。
Webwork支持的客户端验证类型有:
◆required validator
◆requiredstring validator
◆stringlength validator
◆regex validator
◆email validator
◆url validator
◆int validator
◆double validator
二、配置Xwork.xml,保证拦截器栈里有Validation的拦截器
三、编写Jsp(VM或FTL)。这里有几个需要注意的地方。
1.在Jsp加上一个Head标签,
主要是获取显示错误是的样式。
2、使用
在
- 〈ww:form namespace="/foo/bar"
- action="new" validate="true"/〉
- validate="true"一句将会在客户端生成一句:
- 〈script src="/bean/webwork/xhtml/validation.js"〉
- 〈/script〉
如果你这样写:
- 〈ww:form action="/foo/bar/new.action"
- validate="true"/〉
你将得不到客户端验证。要注意,这个细节不容忽视。后来查文档的时候才知道Webwork已经提醒我们要像上一种写法那样写。因为她要知道哪个名字空间下的哪个Action需要被验证!看吧。这是心急的错。不看文档后果就自负。
以上两种写法,在页面上生成Js的结果是不一样的。
***种写法会在页面上生成相应的WebWork验证机制规则。
第二种写法生成的Js,只是简单清楚报错信息然后提交请求到服务器,由服务器来验证。
只需要这三步,Webwork2.2.2的客户端验证功能就算是使用了。
现在编辑是使用FCKEditor,另外可以看Webwork的Showcase。这东西太出彩了。
【编辑推荐】