struts2_请求参数_手动校验(代码校验)

本文详细介绍了在Struts2框架中实现手动校验的方法。包括手动校验的前提条件、工作原理,如何在validate方法中存储错误信息,以及如何在输入视图中显示这些错误信息。还探讨了如何针对不同的请求参数进行定制化的校验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在实际的开发当中,我们需要对请求参数进行校验。校验又分为前台校验和后台校验,所谓的前台校验就是在页面上编写JS校验。而后台校验则需要用到java代码。而struts2框架给我们提供了手动校验和配置校验。我们来谈谈什么是手动校验。

1. 手动校验前提
 手动校验则要求action类实现Validateable和ValidationAware接口。一般来讲,我们让action继承ActionSupport就行了。因为ActionSupport它实现了这两个接口,然后再在action类中对validate这个方法进行重写。

2. 手动校验原理
 ;在拦截器组中有一个拦截器叫params,这个拦截器是负责将请求参数进行封装的。在这个拦截器下面有个拦截器叫validation,因为params将数据进行封装完了,所以validation会在访问action之前调用validate这个方法,在这个方法中对请求参数进行校验。如果valication拦截器向action中存储了错误信息,那么拦截器workflow就会拦截请求,同时转跳到input视图。
手动校验原理

3. 在validate方法中如何存储错误信息?

@Override
    public void validate() {
        // 说明用户名为空
        if (user.getUsername() == null
                || user.getUsername().trim().length() == 0) {

            //调用addFieldError这个方法来进行存储错误信息的。
            this.addFieldError("username.message", "用户名不能为空");

        }

        if (user.getPassword() == null
                || user.getPassword().trim().length() == 0) {
            this.addFieldError("password.message", "密码不能为空");

        }
    }

4. 如何在input视图上获取错误信息的?
 在input视图上添加struts2标签库。<%@taglib prefix="s" uri="/struts-tags"%>
然后在在JSP页面上直接调用标签库就行了。

<s:fielderror> 展示所有错误信息

<s:fielderror fieldName="XXX">展示特定名称(XXX)的错误信息.

5. 在同一个action类中,并不是所有的请求参数都需要进行校验如何解决?
 我们可以创建一个名称叫 validate+请求处理方法名 例如:请求处理方法叫 regist() 校验 的方法名 validateRegist().这样就会先运行指定方法,然后再执行validate的方法。将要对数据进行统一处理的过程放在validate方法中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值