【问题标题】:No validator could be found for type: java.lang.Short找不到类型的验证器:java.lang.Short
【发布时间】:2012-11-19 15:47:46
【问题描述】:

我有一个 JAXB 生成的类,其中包含以下内容:

@Pattern(regexp = "[0-9]", message = "Message details here")
protected Short msgVal;

当我运行 JUnit 测试以通过 Hibernate 验证该类的实例时,我得到:

javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Short.

如果我注释掉 @Pattern 约束,JUnitTest 运行良好。

是否可以对 Short 值使用 @Pattern 约束?如果是这样,我错过了什么?

问候, 下午。

【问题讨论】:

    标签: java hibernate jaxb hibernate-validator


    【解决方案1】:

    @Pattern 用于字符串,您不能将其应用于 Short。相反,您可以使用@Max 和/或@Min。 @Digits 可能会更好。

    @Digits(integer=1, fraction=0)
    protected Short msgVal;
    

    【讨论】:

    • 感谢您的快速回复。我以为我自己就是这种情况。但是,JAXB 生成类的 java.lang.Short 字段的 @Pattern 注释是从以下 XSD 自动生成的:<xs:restriction base="xs:unsignedByte"> <xs:pattern value="[0-9]"/> </xs:restriction> 该注释是由 Xjc JSR303 注释插件(即 krasa-jaxb-tools)放置的,我我想知道问题出在模式文件的 中还是在 Xjc 插件的代码本身中?再次感谢,PM。
    • 这是插件工具中的一个错误。您可能想在这里提出问题:code.google.com/p/krasa-jaxb-tools/issues/list
    • 你试过了吗?
    • 对不起,你试过了吗? ' '
    • 我不允许更改架构(它是外部的并被其他组织使用)。在线查看xs:unsignedByte,我相信xs:pattern 允许在xs:restriction 上使用xs:unsignedByte。我将在 krasa-jaxb-tools 问题列表中记录一个问题,并希望看到他们在那里说什么。然而,必须将xs:pattern 限制映射到@Pattern 以外的注释似乎很奇怪。这是正常的,通常由 JSR303 注释插件完成吗?
    【解决方案2】:

    没有@Pattern 注释只将参数作为字符串。你可以使用@Digits(message="message here", integer=32767, fraction = 0)

    【讨论】:

    • 感谢您的快速回复。请参阅我对@Robertiano 回答的评论。干杯,PM。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2015-01-02
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2011-08-24
    相关资源
    最近更新 更多