@NotBlank 注解的作用是表单数据校验,比如无需在controller层拼命的多层判断,由于校验方法有很多,我就随便拿 @NotBlank 注解校验不能为空

实体类from

/**
 * 东泰 http://dt2008.cn
 * 2020-11
 */
@Data
public class UserFrom {
    @NotBlank
    private String username;
    @NotBlank
    private String password;
    @NotBlank
    private String email;
}

看到上面参数全都是设置了无法为空

剩下的就是在controller层校验了

package com.imooc.mall.controller;

import com.imooc.mall.from.UserFrom;

import com.imooc.mall.service.UserService;
import com.imooc.mall.vo.ResponseVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

import static com.imooc.mall.enums.ResponseEnum.PARAM_ERROR;

/**
 * 东泰 http://dt2008.cn
 * 2020-11
 */
@RestController
@RequestMapping("user")
@Slf4j
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("register")
    public ResponseVo register(@Valid @RequestBody UserFrom userFrom, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            
            System.out.println(bindingResult.getFieldError().getField() + bindingResult.getFieldError().getDefaultMessage());
        }
    }

}

上面的代码通过bindingResult判断

bindingResult.getFieldError().getField() 方法是返回字段,比如username或者password

bindingResult.getFieldError().getDefaultMessage() 方法直接返回 不能为空

所以合并起来就是 xxxx不能为空 返回给前端

注意@Valid的jar包,要不然失效

 

 

最后修改于 2021-09-29 07:26:00
上一篇