我使用 JAXB(maven-jaxb2-plugin)从模式(请求和响应)生成域对象
我想为几个属性添加验证(notnull /empty)。我想要自定义 Bean 验证,该应用程序是一个 REST 服务,我使用的是 Spring 3 和 JSR 303,但我认为我不能使用 JSR 303 来验证从模式生成的对象。
有人可以在正确的方向上推动我如何完成这项工作。
我使用 JAXB(maven-jaxb2-plugin)从模式(请求和响应)生成域对象
我想为几个属性添加验证(notnull /empty)。我想要自定义 Bean 验证,该应用程序是一个 REST 服务,我使用的是 Spring 3 和 JSR 303,但我认为我不能使用 JSR 303 来验证从模式生成的对象。
有人可以在正确的方向上推动我如何完成这项工作。
我们一直在使用Krasa JAXB 插件从 XSD 文件生成带有 JSR 303 注释的模型 bean,然后告诉 Spring自动验证输入 bean。如果你有好的 XSD,这会产生非常好的、非常简洁、非常 DRY 的代码。
实际上,您可以通过 jsr-303 xml 配置来执行此操作。例如,参见http://www.aviyehuda.com/2010/04/using-hibernate-validator-to-cover-your-validation-needs/。
您在正确的路径上生成 JAXB。单击此处查看 JSR 303 如何与 POC 配合使用
对于 NotNull/Empty 验证,您可以在模式中使用 jaxb 限制
这是一个例子:
<xsd:simpleType name="NotEmptyString">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
或者您可以使用正则表达式模式:
<xsd:simpleType name="DirType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[LR]*"/>
</xsd:restriction>
</xsd:simpleType>
注意:简单类型不保证自己的类定义。使用 Java 自己的 java.lang.String,除非您通过setEventHandler()请求,否则不会检查长度限制。
更多信息http://jaxb.java.net/tutorial/section_3_3-Validation.html#Validation