gpt4 book ai didi

java - 针对 javax 绑定(bind)注释而不是模式进行验证

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:01 24 4
gpt4 key购买 nike

一直在使用最新的 JAXB Sun 实现,但可以依赖 XJC 生成正确的注释。有几个例子,其中 XJC 没有无缘无故地附加 XMLElement 或 XMLAttribute 注释。加上插件框架背后的逻辑有问题。无论如何,我想放弃编写模式只是为了生成 POJO 然后不得不加载模式仅用于验证的想法。

有人有办法直接根据 Javax 绑定(bind)注释进行验证吗?在以下位置看到了一个很酷的解决方法: how can i unmarshall in jaxb and enjoy the schema validation without using an explicit schema file

动态创建模式只是为了进行验证。寻找一种直接反对注释的方法(如 Hibernate Validator 和 JSR 303,但专门针对 Javax 绑定(bind)注释)?

最佳答案

没有任何标准验证可以针对 JAXB 注释进行。事实上,这在很大程度上是因为对象模型的类型化性质减少了可能出现的无效输入的数量(例如,如果我的客户元素有一个子地址元素,那么我的客户对象有一个地址属性,你可以' t 在该属性上设置 Address 对象以外的任何内容)。

您可能需要验证的地方是将集合限制为特定数量的元素(因为您有 maxOccurs="10"),或者将字符串限制为特定长度(因为您有架构方面)。默认情况下,JAXB 2.X (JSR 222) 不会将这些生成到您的对象模型中(尽管您当然可以自己添加它们,就像人们在使用 JPA 时所做的那样),使用 JSR 303 并运行 validator 。

与您的问题相关的其他要点:

  1. 如果您遇到问题XJC工具,请考虑记录一个错误:

  2. 如果不存在注释则默认是@XmlElement,所以一些这些注释可能会丢失为此原因。注释是通常只添加调整名称或命名空间信息。

  3. 使用 JAXB(就像 JPA),您可以从 POJO 开始。 JAXB 注释可以添加自定义XML代表。

关于java - 针对 javax 绑定(bind)注释而不是模式进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3537749/

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