关于Struts2中visitor校验器的解决方法
来源:互联网 发布:网络主播面试的流程 编辑:程序博客网 时间:2024/06/02 09:58
转自:http://blog.163.com/hdhr_hanxin@126/blog/static/55659922200952605033246/
首先,一般我们在提交表单的时候,对表单的各字段就要有校验的过程,实际部署过程中要分 客户端校验 和服务器端校验。 客户端校验使用rapid validation等第三方客户端校验框架就可以实现,而且比Struts2本身自带的客户端校验方式更好,但服务器端校验却可以分为好几种:
1.如果在Action中只有一个处理逻辑的话,可以重写ActionSupport中的validate()方法。
2.如果在Action中存在多个类似于execute的处理逻辑的话,我们可以重写validateXxx()方法(Xxx为不同的处理逻辑名称,例如有validateRegist()方法,就是处理Regist业务逻辑)
3.编写对应于Action的validate 的xml文件。这个应该是最为常用的一种解决方案了,但是有一个问题,Action众多,或者在Action中有多个对应一个或多个POJO的处理逻辑,那么这些xml文件就会随着Action文件和处理逻辑的增加而相应的增加,这显然不是个好的现象。 所以如果只是针对POJO来写相应的validate xml文件,无疑会好很多。 这就是Visitor校验器的功用了。
很多和我一样的初学者可能手边都有一般李刚写的 《Struts 2 权威指南》,里面正好讲了visitor校验器,但是我照着书上讲的步骤重复做了N次都没有正确,于是乎在网上搜索了相关的文章,最后终于发现书上没有讲完整 (P280-P281)
以下我来举个例子:
我建立了一个User的POJO,处理逻辑为UserAction, 测试页面为login.jsp
- <%@ page language="java" pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>用户登录页面</title>
- <style type="text/css">
- .errorMessage {
- font-weight: bold;
- color: red;
- }
- </style>
- </head>
- <body>
- <s:form action="pro_login.do">
- <s:textfield name="user.username" label="用户名称" />
- <s:password name="user.userpwd" label="登录密码" />
- <s:submit value="登 录" />
- </s:form>
- </body>
- </html>
那么我的Visitor校验器为
UserAction-validation.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.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-validate.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.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参数将作为验证[img][/img]User类属性的文件名的一部分,如user属性返回一个User对象,那么用于验证User对象属性的文件名为User-abc-validation.xml。
这个文件要和User.class文件在同一个目录中。也就是要放到你的POJO文件相同的目录路径下,不然的话Visitor校验器就不会起作用。
- 关于Struts2中visitor校验器的解决方法
- 关于struts2的校验
- 关于struts2的校验方式
- struts2-validate内置校验器失效的解决方法
- struts2的校验器
- struts2的校验器
- Struts2中validator校验器不起作用的情况
- struts2校验框架中各个验证器param的值
- struts2关于输入校验
- Struts2校验器的使用
- Struts2框架的校验器
- Struts2提供的校验器
- Struts2常用的校验器
- Struts2的内置校验器
- Struts2框架的校验器
- struts2提供的校验器
- struts2提供的校验器
- 关于Struts2.0中重复提交问题的解决方法
- Eclipse 插件安装 ve 最新安装指南,超级简单!
- 高速PCB设计指南之第一篇 PCB布线
- DEBUG和RELEASE的区别及二个版本的调试
- 使用VS2008进行WEB负载测试
- 一步一步在Windows安装苹果雪豹系统
- 关于Struts2中visitor校验器的解决方法
- 鼠标点击变灰
- 学习方法感悟
- 大四寒假考试完之后第一天到MISON
- 新房提前装修完毕。
- 中国公民在国外最常问的10个“傻”问题
- Dom4j的使用(全而好的文章)
- asp.net Global计划任务
- Batch大全