当前位置: 首页 > 知识库问答 >
问题:

@Validated如何在公共方法上工作?

越涛
2023-03-14

尝试在controller上添加@Validated方法,它起作用了

java prettyprint-override">public class TaskValidator {
    private static final Logger logger = LogManager.getLogger("TaskValidatorLogger");
    public void validateTest(@Validated Test test) {
        logger.info("Validate: {}", test.getName());
    }

    public static void main(String[] args) {
        new TaskValidator().validateTest(new Test());
    }
}
@Data
public class Test {
    @NotNull(message = "name can not be null")
    private String name;
}

它应该抛出MethodArgumentNotValidException但不抛出。

共有1个答案

孙鑫鹏
2023-03-14

Spring MVC具有自动验证@Controller输入的能力。在以前的版本中,由开发人员手动调用验证逻辑。

在控制器方法中,springboot自动将任何验证器绑定到模型,并在数据绑定到对象时调用它。

但是在您的情况下,您试图验证一个对象,在这种情况下,springboot可能不会自动将验证器绑定到模型并调用验证器,因此,在这种情况下,您需要手动将对象绑定到验证器。

@AutoWired
Validator validator;
...

validator.validate(book);
 类似资料:
  • 问题内容: 首先,如果这是一个非常愚蠢的问题,请原谅我,我只是想学习这种语言的核心。我正在阅读《有效的Java》,并且第一章讨论了静态工厂方法与构造方法。他们的利弊。令我困惑的几件事是: 静态工厂方法返回的对象的类是非公共的 -究竟是什么意思? 与构造函数不同,每次调用静态工厂方法都不需要创建新对象 -这是怎么发生的?我仅调用工厂方法来获取新对象,是否将检查方法放入工厂方法中以检查对象是否已存在?

  • 简介 框架中内置封装了一些公共函数,开发者在实际业务中可以直接使用,无需重复封装。其中包括: 协程函数 数组函数 目录(文件夹)函数 环境函数 文件函数 文件系统函数 对象函数 PHP 助手函数 字符串函数 系统函数 XML 函数 通用函数 协程函数 创建协程Swoft 框架中不能使用 Swoole 提供的 go 函数创建协程,否则会造成请求和上下文丢失最终导致一些不可预估的问题。 Swoft 拥

  • 问题内容: 我当时正在上课,我想到了几个问题。 我注意到,其他类将使用的公共方法调用了一些私有方法来完成所有工作。现在,我知道OOD的原则之一就是尽可能多地私有化并隐藏所有实现细节。我不确定我是否完全理解其背后的逻辑。 我知道将字段设为私有很重要,以防止将无效值存储在字段中(这只是许多原因之一)。但是,对于私有方法,我不确定为什么它们如此重要。 例如,对于类,我们是否不能将所有实现代码都放入公共方

  • 问题内容: 的文档:https : //github.com/bvaughn/react- virtualized/blob/master/docs/WindowScroller.md#updateposition 但是我签出了源代码:https : //github.com/bvaughn/react- virtualized/blob/master/source/WindowScroller/

  • 我想让你问几个问题,向你请教: 我想测试我的公共方法(我使用Spring Boot、Mockito、JUnit): 非常感谢你所有的提示! 向马修问好

  • 我定义一个方面如下: 我在服务包中有一个服务类,如下所示: