栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

表单验证使用注解@Valid

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

表单验证使用注解@Valid

表单验证使用注解@Valid

首先我们先了解一下@Valid的只要用途:主要用于表单验证,减轻了代码量。
@Valid注解可以搭配的注解有
@NotNull:不能为空
@Length(message=“参数的长度在{min}~{max}之间”,min=1,max=10):设置长度
@Past:设置日期只能为过去日期
@Email:设置为邮箱格式
Maven项目引入依赖


	jakarta.validation
	jakarta.validation-api
	3.0.2


	org.hibernate.validator
	hibernate-validator
	7.0.4.Final


接下来实战演示,在我们使用@Valid注解之前我们需要先写一个异常统一处理的方法,用于规范参数不全时返回

package com.zry.base_server.exception;

import com.zry.base_server.common.base.enums.SystemHttpResponseEnum;
import com.zry.base_server.common.web.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.Objects;


@Slf4j
@RestControllerAdvice
public class ExceptionHandling {
    
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public JsonResult handleValidException(MethodArgumentNotValidException e) {
        log.error("请求参数异常");
        e.printStackTrace();
        return JsonResult.error(SystemHttpResponseEnum.PARAM_ERROR.getCode(), Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage());
    }
}

接下来是Controller层


@Slf4j
@RestController
public class LoginController {
    @Resource
    private UserService userService;

    
    @PostMapping("login")
    public JsonResult login(@Valid @RequestBody LoginDTO login) {
        log.info("账号:{},密码:{}", login.getAccount(), login.getPassword());
        UserPO user = userService.findUserByAccount(login.getAccount());
        if (user == null) {
            log.error("LoginController:login:账号不存在,请检查账号是否输入错误");
            return JsonResult.error(SystemHttpResponseEnum.LOGIN_ERROR.setMsg("账号不存在,请检查账号是否输入错误。"));
        }
        String psd = Md5Util.encryption(login.getPassword());
        if (!user.getPassword().equals(psd)) {
            log.error("LoginController:login:密码输入错误");
            return JsonResult.error(SystemHttpResponseEnum.LOGIN_ERROR.setMsg("密码输入错误。"));
        }
        return JsonResult.success().setData(new TokenVO(JwtUtil.create(user.getId())));
    }
}

重点要来喽

package com.zry.base_server.bean.login;

import lombok.Data;

import javax.validation.constraints.NotEmpty;


@Data
public class LoginDTO {
    
    @NotEmpty(message = "请输入账号")
    private String account;
    
    @NotEmpty(message = "请输入密码")
    private String password;
}

我们只需要在接受实体的字段上加入上面说的注解,在接口被请求的时候就会帮助我们进行表单验证以及返回指定消息啦。
我们看一下返回

{
	"code": 90004,
	"msg": "请输入账号",
	"data": ""
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/985995.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号