SpringBoot+vue中@Valid表单验证并返回给前端

总共分为3大步

1) 完成表单验证

1.导入表单验证依赖
<!-- 表单后端校验 -->
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-validation</artifactid>
        <version>2.3.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupid>org.projectlombok</groupid>
        <artifactid>lombok</artifactid>
        <optional>true</optional>
    </dependency>
2.&#x5728;Controler&#x4E2D;&#x7684;login&#x65B9;&#x6CD5;&#x7684;&#x53C2;&#x6570;&#x52A0;&#x4E0A;@Valid&#x6CE8;&#x89E3;,
&#x8FD9;&#x91CC;&#x662F;&#x5C06;&#x8868;&#x5355;&#x53C2;&#x6570;&#x90FD;&#x5199;&#x5230;&#x4E00;&#x4E2A;&#x81EA;&#x5B9A;&#x4E49;&#x7684;&#x63A5;&#x53D7;&#x53C2;&#x6570;&#x7C7B;,&#x524D;&#x7AEF;&#x4F20;&#x8FC7;&#x6765;&#x7684;&#x4E09;&#x4E2A;&#x53C2;&#x6570;&#x90FD;&#x4F1A;&#x4F5C;&#x4E3A;&#x5C5E;&#x6027;&#x5B58;&#x50A8;&#x5230;&#x8BE5;&#x7C7B;&#x7684;&#x5BF9;&#x8C61;&#x4E2D;,
&#x8FD9;&#x4E2A;&#x7C7B;&#x4E2D;&#x8C03;&#x7528;validation&#x5305;&#x7684;&#x6CE8;&#x89E3;&#x6765;&#x8BBE;&#x7F6E;&#x6821;&#x9A8C;&#x7684;&#x5185;&#x5BB9;

SpringBoot+vue中@Valid表单验证并返回给前端
SpringBoot+vue中@Valid表单验证并返回给前端
SpringBoot+vue中@Valid表单验证并返回给前端

2) 捕获消息并返回给前端

表单验证到这里还没有结束,因为前面只设置了表单需要验证的内容,而我们现在要处理当不满足验证的需求时的情况

//&#x81EA;&#x5B9A;&#x4E49;&#x8FD4;&#x56DE;&#x7C7B;: ApiResult
//&#x6240;&#x6709;&#x4FE1;&#x606F;&#x90FD;&#x4F1A;&#x5B58;&#x5165;&#x8BE5;&#x7C7B;&#x7684;&#x5C5E;&#x6027;&#x4F20;&#x7ED9;&#x524D;&#x7AEF;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.util.Date;

@Data
@JsonInclude(JsonInclude.Include.ALWAYS)
public class ApiResult<t> {
    int status;
    boolean success;
    String message;
    T data;
    Date time;

    public ApiResult(int status, boolean success, String message, T data) {
        this.status = status;
        this.success = success;
        this.message = message;
        this.data = data;
        this.time = new Date();
    }

    public static <t> ApiResult<t> ok(){
        return new ApiResult(200,true,"register successful",null);
    }

    public static <t> ApiResult<t> ok(String message){
        return new ApiResult(200,true,message,null);
    }
    public static <t> ApiResult<t> ok(T data){
        return new ApiResult(200,true,"register successful",data);
    }
    public static <t> ApiResult<t> ok(String message,T data){
        return new ApiResult(200,true,message,data);
    }

    public static <t> ApiResult<t> create(){
        return new ApiResult(201,true,"register successful",null);
    }
    public static <t> ApiResult<t> create(String message){
        return new ApiResult(201,true,message,null);
    }
    public static <t> ApiResult<t> create(T data){
        return new ApiResult(201,true,"register successful",data);
    }
    public static <t> ApiResult<t> create(String message,T data){
        return new ApiResult(201,true,message,data);
    }

    public static <t> ApiResult<t> notFound(String msg) {
        return new ApiResult(404,false,msg,null);
    }
    public static <t> ApiResult<t> failedMsg(int code, String msg) {
        return new ApiResult(code,false,msg,null);
    }

}

</t></t></t></t></t></t></t></t></t></t></t></t></t></t></t></t></t></t></t></t></t>
创建一个exception包,再分别创建两个类。再创建一个自定义返回类ApiResult
//&#x7B2C;&#x4E00;&#x4E2A;&#x5F02;&#x5E38;&#x7C7B;LoginException&#x7EE7;&#x627F;&#x4E0E;RuntimeException&#x7C7B;

import org.springframework.http.HttpStatus;

import static org.springframework.http.HttpStatus.UNAUTHORIZED;

public class LoginException extends RuntimeException{
    private Integer status = UNAUTHORIZED.value();

    public LoginException(String msg){
        super(msg);
    }

    public LoginException(HttpStatus status, String msg){
        super(msg);
        this.status = status.value();
    }
}
//&#x7B2C;&#x4E8C;&#x4E2A;&#x5F02;&#x5E38;&#x7C7B;: ExceptionAdvice

import com.example.securityreview.coomon.api.ApiResult;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import javax.security.auth.login.LoginException;

@RestControllerAdvice
public class ExceptionAdvice {

    private final static String EXCEPTION_MSG_KEY = "Exception message : ";

    @ResponseStatus(HttpStatus.UNAUTHORIZED)
    @ExceptionHandler({LoginException.class}) //&#x8FD9;&#x91CC;&#x5C31;&#x662F;&#x5199;&#x5165;&#x6709;@Vaild&#x6CE8;&#x89E3;&#x7684;&#x90A3;&#x4E2A;&#x7D2F;
    public ApiResult loginException(LoginException e){ //LoginException&#x5C31;&#x662F;&#x7B2C;&#x4E00;&#x4E2A;&#x5F02;&#x5E38;&#x7C7B;
        return ApiResult.failedMsg(HttpStatus.UNAUTHORIZED.value(), e.getMessage()); //HttpStatus&#x662F;Spring&#x81EA;&#x5E26;&#x7684;&#x72B6;&#x6001;&#x5C01;&#x88C5;&#x679A;&#x4E3E;&#x7C7B;(200,400,404,500,....)
    }

}

&#x5230;&#x6B64;&#xFF0C;&#x540E;&#x7AEF;&#x7684;&#x6240;&#x6709;&#x914D;&#x7F6E;&#x7686;&#x5DF2;&#x5B8C;&#x6210;

3) 前端获取消息并输出该消息

&#x540E;&#x7AEF;&#x5DF2;&#x7ECF;&#x53EF;&#x4EE5;&#x628A;&#x6D88;&#x606F;&#x5C01;&#x88C5;&#x5728;ApiResult&#x81EA;&#x5B9A;&#x4E49;&#x8FD4;&#x56DE;&#x5BF9;&#x8C61;&#x8FD4;&#x56DE;&#x7ED9;&#x524D;&#x7AEF;&#xFF0C;&#x90A3;&#x4E48;&#x524D;&#x7AEF;&#x8BE5;&#x600E;&#x4E48;&#x5904;&#x7406;&#x5462;?

SpringBoot+vue中@Valid表单验证并返回给前端
&#x4ECE;&#x56FE;&#x7247;&#x53EF;&#x4EE5;&#x770B;&#x51FA;, &#x5F53;&#x4E0D;&#x7B26;&#x5408;&#x9A8C;&#x8BC1;&#x6761;&#x4EF6;&#x65F6;&#x53D1;&#x9001;&#x767B;&#x5F55;&#x8BF7;&#x6C42;&#x5230;&#x540E;&#x7AEF;&#xFF0C;
&#x5219;&#x4F1A;&#x5148;&#x7ECF;&#x8FC7;@Valid&#x548C;&#x7C7B;&#x4E2D;&#x7684;&#x9A8C;&#x8BC1;&#x6CE8;&#x89E3;&#xFF0C;&#x5982;&#x679C;&#x4E0D;&#x7B26;&#x5408;&#x6761;&#x4EF6;&#xFF0C;
&#x5219;&#x4F1A;&#x88AB;ExceptionAdvice&#x7C7B;&#x4E2D;&#x7684;loginException&#x65B9;&#x6CD5;&#x6355;&#x83B7;&#x5230;(&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x4F1A;&#x548C;&#x7B2C;&#x4E00;&#x4E2A;&#x5F02;&#x5E38;&#x7C7B;LoginException&#x8FDB;&#x884C;&#x914D;&#x5408;)&#xFF0C;
&#x5E76;&#x901A;&#x8FC7;&#x81EA;&#x5B9A;&#x4E49;&#x8FD4;&#x56DE;&#x7C7B;ApiResult&#x8FD4;&#x56DE;&#x7ED9;&#x524D;&#x7AEF;,&#x524D;&#x7AEF;&#x62FF;&#x5230;&#x6570;&#x636E;&#x540E;,&#x8FDB;&#x884C;&#x8F93;&#x51FA;

SpringBoot+vue中@Valid表单验证并返回给前端
SpringBoot+vue中@Valid表单验证并返回给前端

&#x539F;&#x521B;&#x5206;&#x4EAB;&#xFF0C;&#x6709;&#x4EC0;&#x4E48;&#x95EE;&#x9898;&#x53EF;&#x4EE5;&#x4EA4;&#x6D41;&#x4E00;&#x4E0B;

Original: https://www.cnblogs.com/cococici/p/16413795.html
Author: 黄伟鸿
Title: SpringBoot+vue中@Valid表单验证并返回给前端

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621568/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 计算机网络学习—物理层

    二、 物理层 2.1 物理层的基本概念 物理层所要解决的问题(⭐) 物理层考虑的是怎样才能 在连接各种计算机的传输媒体上传输数据比特流。 物理层 为数据链路层屏蔽了各种传输媒体的差…

    Java 2023年6月7日
    060
  • 敏捷培训有感

    一周前参加了个关于敏捷的培训,今天回想起来,记忆最深的是两个游戏环节。 游戏一 组装 10 只同样小狗,每只小狗需要 5 块积木,流水线上 5 个人,每人负责固定的一块积木的拼接。…

    Java 2023年6月16日
    068
  • 61.小尖尖

    dsfsf posted @2022-09-28 08:35 随遇而安== 阅读(6 ) 评论() 编辑 Original: https://www.cnblogs.com/55z…

    Java 2023年6月7日
    083
  • FileReader与FileWriter

    FileReader(文件字符输入流) 只能读取普通文本 读取文本内容时,比较方便 与FileInputStream读取文本时的不同是把数组换成char[ ]数组 1.构造方法: …

    Java 2023年6月9日
    060
  • Linux 安装MySQL

    一、准备工作 https://dev.mysql.com/downloads/mysql/ 1.1 上传到指定目录,解压 tar -xvf mysql-8.0.19-linux-g…

    Java 2023年6月8日
    067
  • Redis的订阅和发布

    发布与订阅模型,放在每一位开发者身上,都是耳熟能详的一对词语。与设计模式里面的–观察者模式非常相似。在微服务中,把消息中介分离出来成为独立服务,无论是跨服务通信开发和运…

    Java 2023年6月14日
    0103
  • 日常踩坑

    有人的地方就有江湖,有代码的地方就有坑 一。集合 List与Set继承自Collection。Collection提供定义了一个移除元素的接口 可以看出,在Collection中该…

    Java 2023年6月9日
    096
  • JVM性能调优的6大步骤,及关键调优参数详解

    JVM性能调优是一个非常重要的技能,大厂也特爱问,属于高薪必备技能@mikechen JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 …

    Java 2023年6月15日
    091
  • Spring中的@Lazy注解简析_阻塞队列被异步消费怎么保持顺序呢?_如何优雅的停止一个线程

    @Lazy 的属性 Spring IoC (ApplicationContext) 容器一般都会在启动的时候实例化所有单实例 bean 。如果我们想要Spring 在启动的时候延迟…

    Java 2023年5月30日
    071
  • Spring简介

    ​ spring框架:spring是一个非常活跃的开源框架。基于IOC和aop来构架多层javaee系统,以帮助分离项目组件之间的依赖关系(解耦) 底层: 工厂模式+xml Spr…

    Java 2023年6月13日
    070
  • Golang简介

    一、Golang的优势 1.部署简单: (1)可直接编译成机器码。 (2)不依赖其他库,最终生成的可执行程序是静态的可执行文件。 (3)直接运行,即可部署。 2.静态类型语言,相比…

    Java 2023年6月13日
    076
  • 解决Win10账户没有了管理员权限

    由于某些原因,当前用户账户没有了管理员权限或唯一的管理员账户被禁用,导致无法以管理员身份运行程序,或运行程序时提示需要输入管理员用户名或密码,但却没有输入窗口。这类情况下,需要进入…

    Java 2023年5月30日
    070
  • 上传代码到GitHub仓库

    上传代码到GitHub仓库 准备工作 意思是自从 21 年 8 月 13 后不再支持用户名密码的方式验证了,需要创建个人访问令牌(personal access token)。 这…

    Java 2023年6月16日
    075
  • Java事务失效

    问题复现,用伪代码复现问题! 事务配置文件 controller层代码 /** * excel批量导入信息 */ @RequestMapping(path="/pre/p…

    Java 2023年6月8日
    065
  • Spring Boot 如何热加载jar实现动态插件?

    一、背景 动态插件化编程是一件很酷的事情,能实现业务功能的 解耦 便于维护,另外也可以提升 可扩展性 随时可以在不停服务器的情况下扩展功能,也具有非常好的 开放性 除了自己的研发人…

    Java 2023年6月6日
    079
  • Java连载156-IO总结(三)

    一、管道流 &#xA0;&#xA0;<span class="hljs-keyword">final</span>&am…

    Java 2023年6月13日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球