验证生成的JAXB类(JSR 303 / Spring)

时间:2011-04-29 22:43:26

标签: spring-mvc jaxb bean-validation hibernate-validator

我使用JAXB(maven-jaxb2-plugin)从架构(请求和响应)生成域对象
我想为几个属性添加验证(notnull / empty)。我想有自定义Bean验证,应用程序是一个REST服务,我使用的是Spring 3和JSR 303 但我不认为我可以使用JSR 303验证对象,因为它是从模式生成的。

有人可以给我一个关于如何完成这项工作的正确方向。

4 个答案:

答案 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一起使用

相关问题