像一颗晨土

常用链接

统计

blogs

life

最新评论

Webwork2.2.2 重返Client Validation

        自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标签,<ww:head/>的结果是生成两个Css样式的链接:
<link rel="stylesheet" href="/bean/webwork/xhtml/styles.css" type="text/css"/>
<link rel="stylesheet" href="/bean/webwork/jscalendar/calendar-blue.css" type="text/css"/>
主要是获取显示错误是的样式。
       2、使用<ww:form>,很遗憾我们只能够用Webwork的UI标签,这样才能使用到她的客户端验证机制。在这里要抱怨一下。。<ww:form>的标签是挺方便,但是在特定的场合,我们必须使用自已的样式和风格的布局。而Webwork默认的XHTML主题的标签会把布局搞乱。当然,我可以使用Simple主题的。但是在需要客户端验证的时候,Simple主题是行不通的。也就是说要求主题必须是XHTML以上。。或者自定义的主题(自已提供错误信息报告功能)。呵。没办法,先将就着用XHTML吧。
       在<ww:form>的标签里使用namespace 及Action属性。如果你的Action是/foo/bar/new.action那么,你必须这样写:
       <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的结果是不一样的。第一种写法会在页面上生成相应的验证规则。第二种写法生成的Js,只是简单清楚报错信息然后提交请求到服务器,由服务器来验证。

       只需要这三步,Webwork2.2.2的客户端验证功能就算是使用了。感觉还不错。唯一纳闷的还是Webwork强制我什么使用她的模板。
       Ps:有很多示例代码没同贴出来,是有原因D。现在编辑是使用FCKEditor,另外两个Editor在我的机子上变成了白痴。出错、完全不能编辑。。。手上又没有好的“XML到 HTML”的好工具。。所以没把代码贴上来。。详情,可以看Webwork的Showcase。这东西太出彩了。:P

posted on 2006-03-30 16:47 艾尘 阅读(2394) 评论(9)  编辑  收藏 所属分类: pick up

评论

# re: Webwork2.2.2 重返Client Validation 2006-05-29 16:35 wangxq

我想请问一下目前的版本dtd似乎根本不能识别<ww:head/>。您是怎么加上去并使用的。  回复  更多评论   

# re: Webwork2.2.2 重返Client Validation 2006-05-29 16:39 艾尘

目前版本DTD?
你只需要用2.2.2的标签定义文件就得了。webwork.tld
  回复  更多评论   

# re: Webwork2.2.2 重返Client Validation 2006-05-29 16:51 wangxq

我用的WW-EXAMPLE里面的webwork.tld,结果没有关于<ww:head/>标签的定义,能不能帮帮我,我就差这口气就可以活了。  回复  更多评论   

# re: Webwork2.2.2 重返Client Validation 2006-05-29 16:53 艾尘

请确定你的WW版本是2.2.2。不然没戏演。  回复  更多评论   

# re: Webwork2.2.2 重返Client Validation 2006-05-29 17:13 wangxq

谢谢你,确实是这个原因,我大头了。不好意思。因为官方网站上给的WW-EXAMPLE例子是在2.1.7的包,我拿这个例子的包去跑2.2.2的例子,肯定跑不动了。而且经过我试验,若仅仅是只替换一下jar包的版本,整个环境就跑不起来了。请问你有没有哪里看到关于2.2.2的例子提供下载学习的。再次感谢,好心的人。  回复  更多评论   

# re: Webwork2.2.2 重返Client Validation 2006-05-29 17:24 艾尘

官方的发行版就带有很精彩的例子。 :)  回复  更多评论   

# re: Webwork2.2.2 重返Client Validation 2006-06-06 09:17 Tin

修改webwork的模版的确是烦人的事,不过还好那些ftl不算太复杂。xhtml theme绝对垃圾,一定要扩展自己的simple。  回复  更多评论   

# re: Webwork2.2.2 重返Client Validation 2006-09-15 15:40 HelloX

注意这个帖子很久了,而且还加入了收藏夹,今天又看了一下,注意到楼主很耐心的帮助解答,再不回帖就说不过去了。顶一个。  回复  更多评论   

# re: Webwork2.2.2 重返Client Validation 2006-10-29 11:34 HelloX

求助! 在成功实现Webwork2.2.2的Client Validation后,出现了新的问题。
出错的信息累积显示在页面上,验证一次,如果出错信息,再叠加在原来的出错信息上,很郁闷。求救  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: