gpt4 book ai didi

java - 使用 bean 验证生成默认约束消息模板

转载 作者:行者123 更新时间:2023-11-30 08:04:05 26 4
gpt4 key购买 nike

如果注释本身尚未定义此类消息模板,我该如何为约束(在 JPA 实体中)生成默认消息模板。

这就是我的意思。假设我有一个 JPA 实体“Dummy”:

@Entity
public class Dummy {
@Column
@NotNull
Long id;
}

此外,假设我有一个 ValidationMessages.properties 文件,其中包含:

Dummy.id.NotNull=ID of dummy should not be null

现在,如果我将 @NotNull 约束定义为 @NotNull(message={Dummy.id.NotNull}) ,一切都会正常工作,但是如果我想生成“{Dummy.id.NotNull}”模板怎么办即时(使用反射),这样我就不必为每个约束编写相同的标准化模板?我使用 MessageInterpolator 类尝试了此操作,但只有在定义消息属性时才会调用插值方法,这违背了我想要做的事情的目的。

所以,为了让自己清楚,我如何让 validator 询问我的代码块“嘿,类“Dummy”中字段“id”上的约束“NotNull”的消息是什么,即使它有没有分配消息(或者更确切地说,它分配了默认消息)?”

最佳答案

我错了 - 即使注释上没有定义显式消息,也会调用 MessageInterpolator。这几乎回答了我的问题。剩下的唯一事情就是弄清楚如何获取正在验证的字段名称。

编辑:

最后,我被迫为每个字段实现一个 MessageInterpolator 类,在构造函数中传递字段名称,并在验证字段时使用该 MessageInterpolator 创建一个 validator 。我觉得这并不令人满意,但这是我能想到的唯一解决方案。

在这一点上,我觉得有趣的是,在访问注释实例时,无法追溯注释元素(无论是字段、方法、类还是参数)。如果可以的话,我就可以动态获取字段名称,但这似乎是Java的“缺乏”,所以无能为力。

关于java - 使用 bean 验证生成默认约束消息模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31416466/

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