struts2输入验证(转)

struts2输入验证--补充(转)

原文地址:http://blog.csdn.net/ForWayfarer/archive/2008/09/20/2955812.aspx

1.struts2怎么实现方法签名 (类似于struts1的DispatchAction):在strust.xml中配置如下
<action ... method="register" ></action>
<action ... method="login" ></action>
<action ... method="insert" ></action>

(1)struts2怎么实现分发验证 :对应于每个方法签名,可以有相应的validate()方法如下
public void validateRegister()
public void validateLogin()
public void validateInsert()

(2)struts2怎么实现分发验证 :对应于每个方法签名,可以有相应的验证框架如下
UserAction-register-validation.xml
UserAction-login-validation.xml
UserAction-insert-validation.xml

2.验证顺序

在struts1中,如果在FormBean中覆盖了validate()方法,让其放回null值,则验证框架(xml验证)就会失效。返回 null则代表验证通过or无需验证;覆盖的validate()方法如果返回super.validate(mapping,request)即调用父 类的validate(mapping,request),验证框架才会起作用。也就是说,如果想让验证框架有效,则不要覆盖validate()方法, 如果除了验证框架验证,你还想在validate()方法中添加一些其他验证,可以覆盖validate()方法,但返回值须为 super.validate(mapping,request)。

在struts2中类似。struts2的执行顺序为:

(1). 首先Struts2对客户端传来的数据进行类型转换;

(2). 类型转换完毕后再进行输入校验,顺序:UserAction-validation.xml --> UserAction-login-validation.xml --> public void validateLogin(){} --> public void validate(){};

(3). 如果类型转换和输入校验都没有错误发生,那么进入login()方法/execuet()方法(调用商业逻辑).

注意:如果类型转换不成功,也同样要进行输入校验,所以错误信息打印会将二者的错误信息全部打印出来

3.struts2的错误信息

struts2有两种错误级别:addFieldError和addActionError

addActionError(String anErrorMessage) -- Add an Action-level error message to this Action:看源代码对于Action级别的错误信息,实际上是放置在ArrayList中的,action级别的error不会在表单中显示。

addFieldError(String fieldName, String errorMessage) --  Add an error message for a given field:看源代码真正存放field级别错误信息的对象是LinkedHashMap,该LinkedHashMap的key是String类型 的,value是ArrayList类型的(addFielderror(String, ArrayList)),实际上是:LinkedHashMap<String, ArrayList<String>> errors。field级别的error会在表单中显示。

源代码中还有这样一个方法:public boolean hasErrors() { if (hasActionErrors() || hasFieldErrors()) ...} 则返回input页面,表示不论是field级别的还是action级别的,只要错误容器不为空,就返回 到input页面。

另外:struts2验证框架(xml验证)是将错误保存在fielderror中的,而不是actionerror。所以在jsp显示错误时要注意。

4.struts2支持客户端验证,s标签依然支持js事件,所以客户端验证推荐自己写js,不过基本不用struts做客户端验证。此外,s标签即使你不给其设置id属性,s标签也会自动生成一个id(通过查看页面源代码(获得s标签的html代码)可获得),如果你自定义了id,则会将s标签自动生成的id覆盖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值