我使用JAXB(maven-jaxb2-plugin)从架构(请求和响应)生成域对象
我想为几个属性添加验证(notnull / empty)。我想有自定义Bean验证,应用程序是一个REST服务,我使用的是Spring 3和JSR 303
但我不认为我可以使用JSR 303验证对象,因为它是从模式生成的。
有人可以给我一个关于如何完成这项工作的正确方向。
答案 0 :(得分:4)
我们一直在使用Krasa JAXB plugin从XSD文件生成带注释JSR 303的模型bean,然后telling Spring自动验证输入bean。如果你有很好的XSD,这会产生非常好的,非常简洁,非常干的代码。
答案 1 :(得分:1)
您确实可以通过jsr-303 xml配置执行此操作。例如,请参阅http://www.aviyehuda.com/2010/04/using-hibernate-validator-to-cover-your-validation-needs/。
答案 2 :(得分:0)
对于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
答案 3 :(得分:0)
您在正确的道路上生成JAXB。 Click Here了解JSR 303如何与POC一起使用