2012-11-19 19 views
4

我具有包含JAXB生成的類執行以下操作:沒有驗證器可用於類型中找到:java.lang.Short中

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

當運行JUnit測試經由休眠來驗證類的一個實例,我得到:

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

如果我註釋掉@Pattern約束,則JUnitTest運行良好。

是否可以對短值@Pattern限制?如果是這樣,我錯過了什麼?

Regards, PM。

回答

6

@Pattern是字符串,則無法將其應用到短。相反,您可以使用@Max和/或@Min。 @Digits可能會更好。

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

感謝您的快速回復。我自己也是這麼想的。然而,JAXB生成的類由下列XSD自動生成java.lang.Short中字段的@Pattern註解: \t' \t \t \t' 註解是由Xjc JSR303註釋插件(即krasa-jaxb-tools)放置的,我想知道問題是否出現在模式文件的或Xjc插件的代碼本身?再次感謝,PM。 –

+0

它是插件工具中的一個錯誤。您可能想在此提出問題:http://code.google.com/p/krasa-jaxb-tools/issues/list – Perception

+0

您嘗試過嗎? Robertiano

0

no @Pattern註釋只是將參數作爲字符串。您可以使用@Digits(message="message here", integer=32767, fraction = 0)

+0

感謝您的快速回復。請參閱我對@ Robertiano的回答的評論。乾杯,下午。 –

相關問題