java - 未在 Spring Controller 中执行验证

标签 java spring spring-boot

我想在类中使用注释。我用javax.validation.constrants.*用于注释。

public final class EmailCredential implements Serializable {

    private static final long serialVersionUID = -1246534146345274432L;

    @NotBlank(message = "Sender must not be empty.")
    @Email
    private final String sender;

    @NotBlank(message = "Subject must not be empty.")
    private final String subject;

/// getters setters

}

它们都没有按预期工作。这意味着当调用下面的 API 时,如果注释字段无效,注释应该抛出错误。看起来没有注释来检查字段。在普通类中如何正确使用注释?

Controller :

@PostMapping(value = "/email/credentials", consumes = MediaType.APPLICATION_JSON_VALUE)
    public Map<String, Object> emailCredentials(@RequestBody EmailCredential emailCredential) {
        return emailService.setCredentials(emailCredential);
    }

最佳答案

在您的情况下,必须指定要触发的验证。
因此添加 @Valid您要验证的参数上的注释,例如:

import javax.validation.Valid;
// ...
@PostMapping(value = "/email/credentials", consumes = MediaType.APPLICATION_JSON_VALUE)
    public Map<String, Object> emailCredentials(@RequestBody @Valid EmailCredential emailCredential) {
        return emailService.setCredentials(emailCredential);
    }

关于java - 未在 Spring Controller 中执行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753594/

相关文章:

java - Flyway-maven-plugin 如何从 spring boot application.yml 中读取设置

gradle - Spring Boot Gradle插件 "Blessed"多项目环境中的依赖关系

java - 编译使用 iReport 4.1.3 制作的报告所需的 Jars 工作版本是什么

java - 如何在java中对 "\"进行字符串分割?

java - 创建多个文件目录

java - Spring Integration 中的外部消息传递

java - 警告 : Request method 'GET' not supported

java - 在同一输入行添加 3 个整数

java - Spring ,Java : Get email for critical errors configuration.

java - Spring Data Jpa 按方法名称查询无法与 LocalDate 的 BETWEEN 正常工作