You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中@NotBlank等校验注解未生效问题求助

问题解决:Spring Boot 3.0.2 校验注解不生效

问题根源

Spring Boot 3.x 基于 Jakarta EE 9+,Java EE 的 API 命名空间已从 javax.* 迁移到 jakarta.*。你当前使用的是旧版 javax.validation.constraints 包下的校验注解,Spring Boot 3 无法识别这些注解,导致校验逻辑不触发。同时依赖中多余引入的 javax.validation:validation-api 也会进一步干扰校验机制。

修复步骤

1. 替换实体类的校验注解包

将实体类里的 javax.validation.constraints 替换为 jakarta.validation.constraints:

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

public class WatchlistItem {

    @NotBlank(message="You cannot leave it empty")
    private String title;
    private String rating;
    @NotBlank(message = "cannot leave blank")
    private String priority;

    @Size(max = 50, message = "The maximum characters are 50")
    private String comment; 
    // 其余代码保持不变
}

2. 清理 pom.xml 依赖

移除多余的 javax.validation:validation-api 依赖,spring-boot-starter-validation 无需指定版本(Spring Boot parent 已统一管理对应版本):

<!-- 删除以下旧依赖 -->
<!--
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
-->

<!-- 保留此依赖即可 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

3. 确认控制器的@Valid注解包

检查控制器中的 @Valid 注解是否来自 jakarta.validation.Valid,若为旧版 javax.validation.Valid 需同步替换:

import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;

@PostMapping("/watchlistItemForm")
public ModelAndView submitWatchlistItemForm(@Valid WatchlistItem watchlistItem, BindingResult bindingResult ){
    if (bindingResult.hasErrors()){
        return new ModelAndView ("watchlistItemForm");
    }
    WatchlistItem updateItem = getWatchListItemById(watchlistItem.getId());
    // 其余代码保持不变
}

验证修复

重启应用后测试title字段留空的提交场景,此时校验逻辑会正常触发,页面将返回表单并携带错误提示。

内容的提问来源于stack exchange,提问作者Nick Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:56:20