验证javax绑定注释而不是模式

时间:2010-08-21 13:10:35

标签: java validation annotations jaxb

使用最新的JAXB Sun实现,但可以依赖XJC生成正确的注释。有几个例子,XJC没有附加XMLElement或XMLAttribute注释,没有逻辑上的原因。另外还有插件框架背后的逻辑问题。无论如何,我想放弃编写模式只是为了生成POJO,然后必须加载模式只是为了验证。

任何人都有办法直接验证Javax绑定注释?看到一个很酷的解决方法: how can i unmarshall in jaxb and enjoy the schema validation without using an explicit schema file

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

1 个答案:

答案 0 :(得分:1)

没有任何标准验证可以针对JAXB注释完成。事实上,大多数情况下这是因为对象模型的类型性质减少了可能出现的无效输入的数量(例如,如果我的customer元素具有子地址元素,那么我的Customer对象具有Address属性,并且您可以' t在该属性上设置除Address对象以外的任何内容。)

您可能希望验证是将集合限制为特定数字元素(因为您具有maxOccurs =“10”),或者将字符串限制为特定长度(因为您具有模式构面)。 JAXB 2.X(JSR 222)默认情况下不会在对象模型上生成这些内容(尽管您可以自己添加它们,就像人们在使用JPA时一样),使用JSR 303并运行验证器。

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

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

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

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