欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

@Valid 校驗(yàn)無效,BindingResult未獲得錯(cuò)誤的解決

 更新時(shí)間:2021年10月23日 09:43:53   作者:積木i  
這篇文章主要介紹了@Valid 校驗(yàn)無效,BindingResult未獲得錯(cuò)誤的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@Valid 校驗(yàn)失效

問題描述

使用@Valid校驗(yàn)實(shí)體類中的屬性stuTele

import javax.validation.constraints.Size;
...
@Size(min = 11,max = 11,message = "請(qǐng)輸入11位手機(jī)號(hào)碼")
private String stuTele;

Controller中,用@Valid注解對(duì)傳入的student對(duì)象屬性值校驗(yàn)

public String updateStuMsg(@Valid  Student student, BindingResult bindingResult, Model model, HttpSession httpSession){......}

在傳入錯(cuò)誤參數(shù)后,發(fā)現(xiàn)bindingResult中記錄的error為0,說明校驗(yàn)無效

解決過程

檢查引入的依賴:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>7.0.1.Final</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

在將hibernate-validator的版本切換到 5.4.1.Final 后,發(fā)現(xiàn)校驗(yàn)正常

所以定位為依賴的版本問題。

我的springboot版本為2.5.1,在將依賴替換為下面的內(nèi)容后,校驗(yàn)生效

<!-- 此處沒有指定版本<version>,默認(rèn)會(huì)使用和當(dāng)前springboot匹配的版本也就是2.5.1 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

進(jìn)入spring-boot-starter-validation 里面,查看它的依賴項(xiàng),其中有這樣一條

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.0.Final</version>
    <scope>compile</scope>
</dependency>

所以在外部修改依賴的時(shí)候,也可以直接使用這一版本。

validation-api 這條依賴可以不用保留。

那么最新的7.0.1.Final版本該如何使用?官方文檔里是這樣說的

Jakarta Bean Validation 定義了與 CDI(Jakarta EE 的上下文和依賴注入)的集成點(diǎn)。如果您的應(yīng)用程序在不提供這種開箱即用集成的環(huán)境中運(yùn)行,您可以通過將以下 Maven 依賴項(xiàng)添加到您的 POM 來使用 Hibernate Validator CDI 可移植擴(kuò)展:

示例 1.3:Hibernate Validator CDI 可移植擴(kuò)展 Maven 依賴項(xiàng)

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-cdi</artifactId>
    <version>7.0.1.Final</version>
</dependency>

請(qǐng)注意,在 Java EE 應(yīng)用程序服務(wù)器上運(yùn)行的應(yīng)用程序通常不需要添加此依賴項(xiàng)。

那么,只需要把前面的依賴都替換成這一條,就可以了

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-cdi</artifactId>
    <version>7.0.1.Final</version>
</dependency>

使用bindingResult做參數(shù)校驗(yàn)

在控制類中

 @RequestMapping("/create")
    public void create(@Valid OrderForm orderForm, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            log.error("【創(chuàng)建訂單參數(shù)不正確】,orderForm={}",orderForm);
            //bindingResult.getFieldError().getDefaultMessage()可以獲取到錯(cuò)誤的提示
            throw new OrderException(ResultEnums.PARAM_ERROR.getCode(),bindingResult.getFieldError().getDefaultMessage());
        }
    }

實(shí)體類OrderForm

@Data
public class OrderForm {
    @NotEmpty(message = "姓名必填")
    private String name;//買家姓名
    @NotEmpty(message = "手機(jī)號(hào)必填")
    private String phone;//買家手機(jī)號(hào)
    @NotEmpty(message = "地址必填")
    private String address;//買家地址
    @NotEmpty(message = "openid必填")
    private String openid;//買家微信
    @NotEmpty(message = "購(gòu)物車不能為空")
    private String items;//購(gòu)物車
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring?boot前后端交互之?dāng)?shù)據(jù)格式轉(zhuǎn)換問題

    spring?boot前后端交互之?dāng)?shù)據(jù)格式轉(zhuǎn)換問題

    這篇文章主要介紹了spring?boot前后端交互之?dāng)?shù)據(jù)格式轉(zhuǎn)換,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Java+Swing實(shí)現(xiàn)五子棋游戲的示例代碼

    Java+Swing實(shí)現(xiàn)五子棋游戲的示例代碼

    本文將通過Java語言實(shí)現(xiàn)經(jīng)典游戲—五子棋游戲,文中采用了Swing制作游戲界面,具有開始游戲,悔棋,認(rèn)輸,退出等功能。感興趣的可以跟隨小編一起動(dòng)手試一試
    2022-02-02
  • Java代理的幾種實(shí)現(xiàn)方式總結(jié)

    Java代理的幾種實(shí)現(xiàn)方式總結(jié)

    本文將通過例子說明java代理的幾種實(shí)現(xiàn)方式,并比較它們之間的差異,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下
    2023-12-12
  • spring中bean的生命周期詳解

    spring中bean的生命周期詳解

    今天小編就為大家分享一篇關(guān)于spring中bean的生命周期詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • jdk11?jdk17多版本共存切換方式

    jdk11?jdk17多版本共存切換方式

    這篇文章主要介紹了jdk11?jdk17多版本共存切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Spring Boot集成Mybatis中如何顯示日志的實(shí)現(xiàn)

    Spring Boot集成Mybatis中如何顯示日志的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Boot集成Mybatis中如何顯示日志的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java重點(diǎn)之基于比較的七大排序

    Java重點(diǎn)之基于比較的七大排序

    最近幾天在研究排序算法,看了很多博客,發(fā)現(xiàn)網(wǎng)上有的文章中對(duì)排序算法解釋的并不是很透徹,而且有很多代碼都是錯(cuò)誤的,所以我根據(jù)這幾天看的文章,整理了一個(gè)較為完整的排序算法總結(jié),本文中的所有算法均有JAVA實(shí)現(xiàn),經(jīng)本人調(diào)試無誤后才發(fā)出,如有錯(cuò)誤,請(qǐng)各位前輩指出
    2021-10-10
  • SpringBoot源碼剖析之屬性文件加載原理

    SpringBoot源碼剖析之屬性文件加載原理

    這篇文章主要給大家介紹了關(guān)于SpringBoot源碼剖析之屬性文件加載原理的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Mybatis基于TypeHandler實(shí)現(xiàn)敏感數(shù)據(jù)加密

    Mybatis基于TypeHandler實(shí)現(xiàn)敏感數(shù)據(jù)加密

    業(yè)務(wù)場(chǎng)景中經(jīng)常會(huì)遇到諸如用戶手機(jī)號(hào),身份證號(hào),銀行卡號(hào),郵箱,地址,密碼等等信息,屬于敏感信息,本文就來介紹一下Mybatis基于TypeHandler實(shí)現(xiàn)敏感數(shù)據(jù)加密,感興趣的可以了解一下
    2023-10-10
  • spring boot配置ssl(多cer格式)超詳細(xì)教程

    spring boot配置ssl(多cer格式)超詳細(xì)教程

    這篇文章主要介紹了spring boot配置ssl(多cer格式)超詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11

最新評(píng)論