SpringBoot 参数检查 Controller中检查参数是否合法

Posted liuxm-刘小明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 参数检查 Controller中检查参数是否合法相关的知识,希望对你有一定的参考价值。

springboot 验证 默认使用的是hibernate validator ,不用额外增加引用包,springboot已经内置包含。

1)定义接收参数实体

package com.study.valid_demo.vo;

import javax.validation.constraints.AssertFalse;
import javax.validation.constraints.Pattern;

import org.hibernate.validator.constraints.NotBlank;

/**
 * 接收客户端信息载体
 * 
 * @author Administrator
 *
 */
public class RegisterVO {

    @NotBlank(message = "用户名不能为空")
    private String userName;

    @NotBlank(message = "年龄不能为空")
    @Pattern(regexp = "^[0-9]{1,2}$", message = "年龄不正确")
    private String age;

    @AssertFalse(message = "必须为false")
    private Boolean isFalse;
    /**
     * 如果是空,则不校验,如果不为空,则校验
     */
    @Pattern(regexp = "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", message = "出生日期格式不正确")
    private String birthday;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public Boolean getIsFalse() {
        return isFalse;
    }

    public void setIsFalse(Boolean isFalse) {
        this.isFalse = isFalse;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}

2.定义controller

package com.study.valid_demo;

import javax.validation.Valid;

import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.study.valid_demo.vo.RegisterVO;

@RestController
@RequestMapping("/index")
public class IndexController {

    @RequestMapping("/register")
    @ResponseBody
    public String register(@RequestBody @Valid RegisterVO register, BindingResult result) {

        // 使用BindingResult 时,验证错误需要自己处理。应用程序程序正常返回
        if (result.hasErrors()) {
            for (ObjectError error : result.getAllErrors()) {
                System.out.println(error.getDefaultMessage());
            }

        }

        return register.getUserName();
    }

    @RequestMapping("/register2")
    @ResponseBody
    public String register(@RequestBody @Valid RegisterVO register) {


        // 不使用ResultBind时,在spring验证绑定时报400 Badrequest错误,并提示错误详细信息
        return register.getUserName();
    }
}

 

以上是关于SpringBoot 参数检查 Controller中检查参数是否合法的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot 参数检查 Controller中检查参数是否合法

SpringBoot_@valid_参数校验

spring boot启动报内存溢出的问题

SpringBoot 健康检查分析

SpringBoot中常见注解含义总结

(很全面)SpringBoot 使用 Caffeine 本地缓存