Spring Boot 中的大小注释返回 400 Bad Request [英] Size Annotation in Spring Boot is returning 400 Bad Request

查看:27
本文介绍了Spring Boot 中的大小注释返回 400 Bad Request的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 spring boot bean 类中执行 @Size 注释时没有收到消息错误

I am not getting message error while executing @Size annotation in spring boot bean class

下面是我的文件pom.xml

below are my files pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.val</groupId>
    <artifactId>Spring-boot-validation</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Spring-boot-validation</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

用户输入.java

package com.val.Springbootvalidation;

import java.time.LocalDate;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserInput {
    @NotNull(message = "lastname can not be null")
    @Size(min=3, max= 20, message = "Lastname should be between 3 and 20")
    private String lastName;
    private String middleName;
    private String firstName;
    private LocalDate dateOfBirth;
    private Integer siblings;
}

用户.java

package com.val.Springbootvalidation;

import java.time.LocalDate;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String lastName;
    private String middleName;
    private String firstName;
    private LocalDate dateOfBirth;
    private Integer siblings;
}

SpringBootValidationApplication.java(主加载器)

SpringBootValidationApplication.java (Main loader)

package com.val.Springbootvalidation;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootValidationApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootValidationApplication.class, args);
    }
}

我传递的输入是

{
    "firstName":"s"
}

我得到的回复是

{
    "timestamp": "2020-07-27T07:20:04.655+00:00",
    "status": 400,
    "error": "Bad Request",
    "message": "",
    "path": "/api/user/save"
}

在控制台日志中显示

[org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.val.Springbootvalidation.User com.val.Springbootvalidation.UserController.save(com.val.Springbootvalidation.UserInput): [Field error in object 'userInput' on field 'lastName': rejected value [null]; codes [NotNull.userInput.lastName,NotNull.lastName,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userInput.lastName,lastName]; arguments []; default message [lastName]]; default message [lastname can not be null]] ]

推荐答案

Spring Boot 2.3.2 存在验证消息问题或行为改变.尝试降级到 Spring Boot 2.2.9

Spring Boot 2.3.2 has issues with validation messages, or behaviour changed. Try to downgrade to Spring Boot 2.2.9

这篇关于Spring Boot 中的大小注释返回 400 Bad Request的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆