Java XML中的Hibernate验证器约束
我正在使用xml文件指定对传入请求bean的约束。我在validation-constraints.xml文件中执行此操作,如下所示:Java XML中的Hibernate验证器约束,java,xml,hibernate,bean-validation,spring-ws,Java,Xml,Hibernate,Bean Validation,Spring Ws,我正在使用xml文件指定对传入请求bean的约束。我在validation-constraints.xml文件中执行此操作,如下所示: <?xml version="1.0" encoding="UTF-8"?> <constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.org/xml/ns/javax/valid
<?xml version="1.0" encoding="UTF-8"?>
<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
<default-package>com.mathworks.internal.business.geoTypes
</default-package>
<bean class="GetStatesByCountryCodeRequest">
<field name="countryCode">
<constraint annotation="org.hibernate.validator.constraints.NotBlank" />
</field>
</bean>
</constraint-mappings>
com.mathworks.internal.business.geoTypes
我还需要国家代码只有2个字符长。我查看了hibernate提供的长度验证器,但它需要一个最小值和一个最大值,我猜在我的例子中应该是2和2。如何以XML方式指定长度约束?我找不到任何这样的例子。我最后做了以下工作:
<bean class="GetStatesByCountryCodeRequest">
<field name="countryCode">
<constraint annotation="org.hibernate.validator.constraints.NotBlank" />
<constraint annotation="org.hibernate.validator.constraints.Length">
<element name="min">2</element>
<element name="max">2</element>
</constraint>
</field>
</bean>
2.
2.
这似乎已经解决了目前的问题 为了解决您的问题,我认为模式约束会更好
<constraint annotation="javax.validation.constraints.Pattern" >
<element name="regexp">[a-zA-Z]{2}</element>
</constraint>
[a-zA-Z]{2}
这将定义一个长度为2的字符串
大小必须介于2和2之间,而不是冲突消息
您将有“必须匹配”[a-zA-Z]{2}“打开验证模式并查找哪些元素可以进入“约束”中。我猜可能有一个prop元素或某个name-value对元素。这看起来不错。Hibernate验证器参考指南如何使用XML约束映射。很抱歉对这样一个老问题发表评论,但我认为在您的情况下,模式约束更合适。我和你有着完全相同的需求,我发现长度(在我的例子中是大小)违规消息并不完全正确——“大小必须在2和2之间”。相反,我使用模式约束定义了一个正则表达式,以提供正确的长度。我会加上它作为答案。