Java XML中的Hibernate验证器约束

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文件指定对传入请求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/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之间”。相反,我使用模式约束定义了一个正则表达式,以提供正确的长度。我会加上它作为答案。