知识大全 关于Struts2中visitor校验器的解决方法
Posted 文件
篇首语:相逢意气为君饮,系马高楼垂柳边。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于Struts2中visitor校验器的解决方法相关的知识,希望对你有一定的参考价值。
关于Struts2中visitor校验器的解决方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
这段时间重新开始拾起JAVA的学习 也是为了以后的工作打算 积累一些经验
记得开始的时候 学习Struts 中的输入校验 就对Vistor校验器情有独钟 首先 一般我们在提交表单的时候 对表单的各字段就要有校验的过程 实际部署过程中要分 客户端校验 和服务器端校验 客户端校验使用rapid validation等第三方客户端校验框架就可以实现 而且比Struts 本身自带的客户端校验方式更好 但服务器端校验却可以分为好几种
如果在Action中只有一个处理逻辑的话 可以重写ActionSupport中的validate()方法
如果在Action中存在多个类似于execute的处理逻辑的话 我们可以重写validateXxx()方法(Xxx为不同的处理逻辑名称 例如有validateRegist()方法 就是处理Regist业务逻辑)
编写对应于Action的validate 的xml文件 这个应该是最为常用的一种解决方案了 但是有一个问题 Action众多 或者在Action中有多个对应一个或多个POJO的处理逻辑 那么这些xml文件就会随着Action文件和处理逻辑的增加而相应的增加 这显然不是个好的现象 所以如果只是针对POJO来写相应的validate xml文件 无疑会好很多 这就是Visitor校验器的功用了
很多和我一样的初学者可能手边都有一般李刚写的 《Struts 权威指南》 里面正好讲了visitor校验器 但是我照著书上讲的步骤重复做了N次都没有正确 于是乎在网上搜索了相关的文章 最后终于发现书上没有讲完整 (P P )
以下我来举个例子
我建立了一个User的POJO 处理逻辑为UserAction 测试页面为login jsp
login jsp
<%@ page language= java pageEncoding= UTF %> <%@ taglib prefix= s uri= /struts tags %> <!DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN transitional dtd > < xmlns= > <head> <meta equiv= Content Type content= text/; charset=utf /> <title>用户登录页面</title> <link type= text/css rel= stylesheet /> </head> <body> <div id= all > <div id= header >header</div> <div id= content > <s:form action= pro_login do > <s:textfield name= user username label= 用户名称 /> <s:password name= user userpwd label= 登录密码 /> <s:submit value= 登 录 /> </s:form> </div> <div id= footer >footer</div> </div> </body> </>
那么我的Visitor校验器为UserAction validation xml
<?xml version= encoding= UTF ?> <!DOCTYPE validators PUBLIC //OpenSymphony Group//XWork Validator //EN validator dtd > <validators> <field name= user > <field validator type= visitor > <param name= context >userContext</param> <param name= appendPrefix >true</param> <message></message> </field validator> </field> </validators>
(注 context参数可以随便设置 只要保持一致就可以了)
User userContext validation xml
<?xml version= encoding= UTF ?> <!DOCTYPE validators PUBLIC //OpenSymphony Group//XWork Validator //EN validator dtd > <validators> <field name= username > <field validator type= requiredstring > <message>请输入用户名称</message> </field validator> </field> <field name= userpwd > <field validator type= requiredstring > <message>请输入密码</message> </field validator> </field> </validators>
其中context参数将作为验证User类属性的文件名的一部分 如user属性返回一个User对象 那么用于验证User对象属性的文件名为User abc validation xml
这个文件要和User class文件在同一个目录中 也就是要放到你的POJO文件相同的目录路径下 不然的话Visitor校验器就不会起作用
这个就是李刚老师没有写全的地方 附加个项目截图就更为清楚了
这样的话 Visitor校验器就起作用了
cha138/Article/program/Java/ky/201311/28465相关参考