【发布时间】:2017-02-08 09:24:13
【问题描述】:
我们正在使用带有 Wildfly 10.0 的 java EE 7。在过去的几天里,我学习了很多包含在 Java EE 7 规范中的 Bean 验证功能。这听起来很有希望,因为我看到了使用注释进行验证的许多优势,包括可重用性和更简洁的代码。
但是 javax.validation.Validator 返回一组 ConstraintViolations。
现在,ConstraintViolation 附加了一条消息,您可以使用getMesssage() 从中获取。消息的类型是字符串。
但是,对于我们的错误处理,我们使用我们创建的称为 Pair<int, String> 的自定义类型来向客户端返回包含错误代码和消息的消息。
以下是我们的配对的示例:
public static final Pair<Integer, String> NAME_VALIDATION_ERROR = new Pair<Integer, String>(
201, "Name must contain only letters");
现在,这一切都在一个名为 ErrorStrings 的类中,它易于使用,因为该类包含静态方法,当您开始输入 ErrorStrings. 时,自动完成功能会为您提供可以使用的错误对的名称。例如NAME_VALIDATION_ERROR。
那么,将Pair<int, String> 添加到ConstraintViolation 的最简单方法是什么,这样它就可以用于将响应返回给客户端,而不会增加代码的复杂性。
我想将Hashmap<String, Pair<int, String>> 添加到ErrorStrings 类,并使用ConstraintViolation 中定义的message 作为键,但这会增加该类的复杂性,因为您必须更改一对以及当您想要更改或添加一些错误时的哈希图。
我正在使用休眠验证器,它是 Jave EE 的默认实现,但我愿意使用任何其他实现。我想知道最简单的方法,重新定义ConstraintViolation,使其包含Pair<int, String>。
【问题讨论】:
标签: java hibernate validation jakarta-ee bean-validation