gpt4 book ai didi

java - 如何使用 JSR 303(Bean 验证)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:45 27 4
gpt4 key购买 nike

我阅读了许多关于 JSR 303 规范的教程,但我没有看到任何可用于生产的示例。到处都描述了如何获得Set<Constraintviolation<T>>目的。

例子:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
Set<ConstraintViolation<Car>> violations = validator.validate(car);

但是接下来呢?我想通知方法调用者(客户端)方法参数处于不一致状态。

我必须用 Set<ConstraintViolation<Car>> 做什么?我需要手动迭代 Set<ConstraintViolation> ,将所有错误消息收集到一个字符串中,然后抛出此消息的异常?

或者存在一些开箱即用的更方便的方法?

或者最好提供validate每个bean里面的方法?

最佳答案

我会采纳您的第一个建议 - 迭代约束违规。您不必创建包含所有这些内容的错误消息。只显示一条错误消息说 bean <bean> is not valid 可能是个好主意并将约束违规设置为异常的属性。

也许您需要将违反约束的行为转换为另一个对象,否则您的应用程序的大部分内容将依赖于 bean 验证 api。这可能是一个太强的耦合。

您的问题是如何处理约束违规是非常特定于用例的。在许多情况下,您不想通知调用者约束违规,而是其他一些对象。例如,在 Web 表单中,您希望通知您的 View 模型它也应该显示这些约束违规。抛出异常只是另一回事。请注意,这不会是 ConstraintViolationException在大多数情况下,但应用程序特定的异常(exception)。

关于java - 如何使用 JSR 303(Bean 验证)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561772/

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