每个人
因此,我有一个SpringBoot应用程序,它带有一个控制器,该控制器有几种方法,将以下POJO作为参数:
package com.example.dto;
import lombok.Data;
@Data
public class MyEntity {
@NotNull
private String fieldA;
private String fieldB;
}
对于其中一个控制器endpoint,我想应用额外的验证逻辑,因此在验证中。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。实例验证。ValidEntity
是我想要应用的约束注释。
我的问题是,只有在MyEntity
中定义的@NotNull
检查成功通过时,才会调用此附加约束。如果fieldA
为空,ValidEntity
约束将被忽略,客户端将收到不完整的验证结果。我错过了什么?
我不知道是否有一种简单的方法来配置验证器,以便在第一次或两者都失败时聚合注释和XML配置中的约束违规行为。
正如您的代码所演示的,Hibernate Validator可以使用混合注释和XML配置,但缺乏针对该特定情况的文档说明,至少不建议使用它。
当使用XML配置文件时,默认情况下它优先于注释。忽略注释用于克服这一点(文本高亮是我的):
将忽略注释
设置为true意味着忽略放置在配置bean上的约束注释。此值的默认值为true。忽略注释
也可用于节点类
,字段
,getter
,构造函数
,方法
,参数
,>交叉参数
和返回值
。如果未在这些级别上显式指定,则应用配置的bean值。
使用Hibernate Validator满足您的验证需求这篇文章指出:
字段的默认值是ignore annotations=“false”
。这意味着默认情况下,字段的注释更强(这当然是在您指出bean本身不会忽略注释之后)。如果你不想知道XML会比你的强大,你必须通过ignore annotations=“true”
似乎可以禁用用XML配置的特定字段的注释配置。
在注释和XML配置之间切换的另一个解决方案是使用分组约束。
我不确定上面的任何内容是否对您有用,但如果可能的话,我可能会切换到单个配置(XML,假设注释配置来自您无法修改的外部库),并在任何地方强制执行它,而不是依赖未记录的特性。
我不完全确定这一点,因为我从未使用过验证。xml
文件。
但是,我认为Spring首先创建对象,然后应用验证。在创建实例时执行@NotNull
验证。这意味着如果验证失败,构造将抛出异常,Spring甚至不会尝试检查您的约束(在我看来这是有意义的)。
我认为可以通过创建一个带有约束的注释并在类中使用它来“修复”它。如果我是对的,两个注释都将被检查,抛出的异常将包含所有错误。
这只是猜测。让我知道它是否有效。
我在类中有一个签名为的方法。 我有一个调用方法的代码块: 如果我想测试databaseService.save(user)没有被调用,那么我如何用Mockito(3.3.3版)来做呢?
我在SUT中有这段代码: 我知道模型不会为空,因为模型已经存在。因此,我希望不应该与model一起调用。因此,我需要某种的方法,以确保该方法不是用此参数调用的。现在我知道了如何进行相反的操作:如何确保/验证或任何方法本身是在的帮助下用参数调用的,但不确定当前的场景。请帮帮忙。 谢谢
问题内容: 不知道为什么这不起作用。我相信你们都知道我在这里想要达到的目标。 当脚本运行时,我得到一个参考,它引用了这段代码: 我正在使用codeigniter2框架,因此如果我的表单页面对某些人没有意义,则表示歉意。 new_page.php(相关位) 并在new_page.validation.js中 任何帮助将不胜感激!欢呼的家伙 问题答案: 可能会破坏插件的正常运行。根据文档, “布尔tr
我计划使用API中的 波姆。xml 位置检查。JAVA 位置验证器。JAVA 位置JAVA 机器人。JAVA 一个pp.java 这里的问题是,上的
我有以下spring cloud合同: 为了从服务器生成动态响应,我在响应处调用get响应。例如,原因可能是来自数据库的自动生成的id。从get响应ForFindTeamRletByFilters()生成的字符串是一个有效的JSON,不幸的是,它被忽略,并且在测试运行时返回始终为true。 当我用如下静态响应替换execute方法时,我注意到了这一点: 在这种情况下,响应被正确验证,如果不匹配,则
我希望对spring服务的参数使用java bean验证注释。考虑以下服务: