激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - @Valid 校驗無效,BindingResult未獲得錯誤的解決

@Valid 校驗無效,BindingResult未獲得錯誤的解決

2022-02-26 00:25積木i Java教程

這篇文章主要介紹了@Valid 校驗無效,BindingResult未獲得錯誤的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@Valid 校驗失效

問題描述

使用@Valid校驗實體類中的屬性stuTele

?
1
2
3
4
import javax.validation.constraints.Size;
...
@Size(min = 11,max = 11,message = "請輸入11位手機號碼")
private String stuTele;

Controller中,用@Valid注解對傳入的student對象屬性值校驗

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

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

解決過程

檢查引入的依賴:

?
1
2
3
4
5
6
7
8
9
10
<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)校驗正常

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

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

?
1
2
3
4
5
<!-- 此處沒有指定版本<version>,默認會使用和當前springboot匹配的版本也就是2.5.1 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

進入spring-boot-starter-validation 里面,查看它的依賴項,其中有這樣一條

?
1
2
3
4
5
6
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.0.Final</version>
    <scope>compile</scope>
</dependency>

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

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

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

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

示例 1.3:Hibernate Validator CDI 可移植擴展 Maven 依賴項

?
1
2
3
4
5
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-cdi</artifactId>
    <version>7.0.1.Final</version>
</dependency>

請注意,在 Java EE 應用程序服務器上運行的應用程序通常不需要添加此依賴項。

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

?
1
2
3
4
5
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-cdi</artifactId>
    <version>7.0.1.Final</version>
</dependency>

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

在控制類中

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

實體類OrderForm

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@Data
public class OrderForm {
    @NotEmpty(message = "姓名必填")
    private String name;//買家姓名
    @NotEmpty(message = "手機號必填")
    private String phone;//買家手機號
    @NotEmpty(message = "地址必填")
    private String address;//買家地址
    @NotEmpty(message = "openid必填")
    private String openid;//買家微信
    @NotEmpty(message = "購物車不能為空")
    private String items;//購物車
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/Lao_gan_ma/article/details/119175862

延伸 · 閱讀

精彩推薦
1291
主站蜘蛛池模板: 精品亚洲一区二区三区 | 国产亚洲精品综合一区91 | 青青草华人在线 | 性明星video另类hd | 国产资源在线观看视频 | av大全在线播放 | 国产精品久久久久久久久久三级 | 成人在线观看一区二区三区 | 日本中文高清 | 国产亚洲精品综合一区91 | 双性精h调教灌尿打屁股的文案 | 亚洲操比视频 | 91网视频 | 精品国产一区二区三区四 | 国产99精品 | 免费看欧美一级特黄a大片 久久免费视频一区二区三区 | 97视频| 美女av在线免费观看 | xxxx69hd一hd| 日韩视频一区二区三区在线观看 | 337p粉嫩大胆噜噜噜亚瑟影院 | 综合网天天色 | 亚洲涩涩图| 午夜视频在线观 | 亚洲va久久久噜噜噜久牛牛影视 | 羞羞答答xxdd在线播放 | 色综合久久久久久 | 精品69人人人人 | 欧美一级一片 | 一区二区三区在线观看av | 黄色免费电影网址 | www亚洲成人 | 精品一二三区视频 | 成年人在线免费 | 狠狠操人人干 | www日韩在线观看 | 亚洲国产成人一区二区 | 国产做爰| 92看片淫黄大片一级 | 国产噜噜噜噜久久久久久久久 | 精品久久久久久综合日本 |