【问题标题】:Hibernate validator constraints in XMLXML 中的 Hibernate 验证器约束
【发布时间】:2014-02-27 00:06:14
【问题描述】:

我正在使用 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>

我还需要 countryCode 的长度只有 2 个字符。我查看了 hibernate 提供的长度验证器,但它需要一个最小值和一个最大值,我猜在我的情况下应该是 2 和 2。如何以 XML 方式指定长度约束?我找不到任何例子。

【问题讨论】:

  • 打开验证模式并寻找可以进入“约束”的元素。我的猜测是可能有一个 prop 元素或一些名称值对元素。

标签: java xml hibernate bean-validation spring-ws


【解决方案1】:

我最终做了以下事情:

<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>

这似乎已经解决了现在的问题。

【讨论】:

  • 这看起来不错。 Hibernate Validator 参考指南describes in detail 如何使用 XML 约束映射。
  • 抱歉评论这样一个老问题,但我认为在你的情况下 Pattern 约束会更合适。我的需求与您完全相同,我发现长度(或在我的情况下为大小)违规消息并不完全正确 - “大小必须在 2 和 2 之间”。相反,我使用 Pattern 约束来定义一个正则表达式来给出正确的长度。我会添加它作为答案。
【解决方案2】:

为了解决您的问题,我认为模式约束会更好。

<constraint annotation="javax.validation.constraints.Pattern" >
    <element name="regexp">[a-zA-Z]{2}</element>
</constraint>

这将定义一个长度为 2 的字符串。

而不是违规消息“size must be between 2 and 2”
你会有 "must match "[a-zA-Z]{2}""

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多