锁定老帖子 主题:少了一点儿(客户端静态验证)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-08
<!----><!----> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> <!----> 这里主要是两个问题,一个是如何得到 action 的 uri 对应的 classname ,比较难,看了 struts2 源代码,找了好多方法,因为是 annotation 的方式验证,所以都不太成功,不知有没有找这个的代码。最后在 Form.java 里看到, evaluateExtraParamsServletRequest 方法里, addParameter("actionClass", clazz) ,发现其实是可以直接得到 classname 的。在 ValidtaionUtils 里加代码(其实并不好,只是为了减少 VM 中的代码,毕竟 VM 里写逻辑并不太好写) public String toJQueryValidRule(Annotation annotation) { String rule = "" ; String vname = annotation.annotationType().getSimpleName(); String v = (String) Validators .get(vname); if (vname.equals( "RequiredStringValidator" )) { // RequiredStringValidator. 没什么特殊的 rule = rule + v + ": true" ; } else if (vname.equals( "IntRangeFieldValidator" )) { // min max
rule = rule + "min :" + (( IntRangeFieldValidator ) annotation).min() + "," ; rule = rule + "max :" + (( IntRangeFieldValidator ) annotation).max() + "," ; rule = rule + v + ": true" ; } else if (vname.equals( "RequiredFieldValidator" )) { rule = rule + "required : true" ; } return rule; } 这里也只是根据思路的例子,只验证了 required 和 intrange ,其它的需要根据 jquery 再写。 而且这么写也不一定是好的方式,只是个思路吧。
其它的话,就是在页面头部加入 jquery 的 js ,用 sitmesh 加也行,这里就直接写了。三个部分: <script src="/struts2/js/jquery.form.js" type="text/javascript"></script> <script src="/struts2/js/jquery.validate.js" type="text/javascript"></script> <script src="/struts2/js/messages_cn.js" type="text/javascript"></script> 这样,就可以中文了,如果不想再改什么的话,就不用写 messages 部分是,当然,它还可以用 class 的方式进行验证,不好加,但我想如何代码写得好的话,还可以减少不少代码。
这样,我们就可以用 jquery 或其它的框架,在浏览器端静态验证了。
当然,所有都只是个思路,还没有考虑以 xml 方式写 validation 的方式,以及前面说的用 css 的 class 名字来进行表示的方式,以及改变 style 以改变显示验证的样式什么的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1485 次