gpt4 book ai didi

java - Spring 验证: method parameter constraint not called

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:09 25 4
gpt4 key购买 nike

大家。

因此,我有一个带有 Controller 的 SpringBoot 应用程序,该 Controller 具有多种方法,并采用以下 POJO 作为参数:

package com.example.dto;

import lombok.Data;

@Data
public class MyEntity {
@NotNull
private String fieldA;

private String fieldB;
}

对于 Controller 端点之一,我想应用额外的验证逻辑,因此在 validation.xml 中添加以下内容:

<constraint-mappings>
<bean class="com.example.controller.SampleController" ignore-annotations="false">
<method name="doFoo">
<parameter type="com.example.dto.MyEntity">
<valid />
<constraint annotation="com.example.validation.ValidEntity" />
</parameter>
</method>
</bean>
</constraint-mappings>

com.example.validation.ValidEntity 是我想要应用的约束注释。

我的问题是,只有在 MyEntity 中定义的 @NotNull 检查成功通过时,才会调用此附加约束。如果 fieldA 为 null,则忽略 ValidEntity 约束,并且客户端收到不完整的验证结果。我错过了什么?

最佳答案

我对此并不完全确定,因为我从未使用过 validation.xml 文件。

但是,我想说 Spring 首先创建对象,然后应用验证。 @NotNull 验证是在创建实例时执行的。这意味着如果验证失败,构造将抛出异常,Spring 甚至不会尝试检查您的约束(在我看来这是有道理的)。

我认为您可以通过使用约束创建注释并在类中使用它来“修复”它。如果我是对的,两个注释都会被检查,并且抛出的异常将包含所有错误。

这只是一个猜测。让我知道它是否有效。

关于java - Spring 验证: method parameter constraint not called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60433861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com