请求参数验证(1)-javax.validation

一、pom加入如下配置

<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.1.0.Final</version>
</dependency>

二、加注解

@RestController
public class TokenController {

    @InitBinder
    public void initBinder(DataBinder binder){
        binder.setValidator(new TokenValidator());
    }
    @RequestMapping("/token")
    public String token(@ModelAttribute @Valid TokenCommand tokenCommand, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            StringBuffer stringBuffer = new StringBuffer();
            for (ObjectError objectError : bindingResult.getAllErrors()) {
                stringBuffer.append(objectError.getCode());
            }
            return String.valueOf(stringBuffer);
        }

        return tokenCommand.getAppId();
    }

}

在请求参数前面加入@Valid,后面跟上BindingResult

BindResult result必须紧跟着前面的@ModelAttribute, 否则会出错

方法上面加

    @InitBinder
    public void initBinder(DataBinder binder){
        binder.setValidator(new TokenValidator());
    }

三、写验证类

 1 public class TokenValidator implements Validator {
 2     @Override
 3     public boolean supports(Class<?> aClass) {
 4         return aClass.equals(TokenCommand.class);
 5     }
 6 
 7     //supports返回true执行
 8     @Override
 9     public void validate(Object o, Errors errors) {
10         TokenCommand tokenCommand = (TokenCommand) o;
11         if (tokenCommand.getAppId() == null || tokenCommand.getAppKey() == null) {
12             errors.reject("appid and appkey can not be null");
13         }
14         if(tokenCommand.getAppId().length() < 6){
15             errors.reject("appid length less than 6");
16         }
17         if(tokenCommand.getAppKey().length() < 6){
18             errors.reject("appkey length less than 6");
19         }
20     }
21 }

类要实现Validator,引入的是sring包的。

supprots返回true的情况下执行validate

转载于:https://www.cnblogs.com/airLion/p/6406675.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值