2014-05-03 98 views
0

https://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html/chapter-message-interpolation.html使用Hibernate驗證

根據休眠驗證文件彈簧消息插值參數置換,以下是可以做到其中{分鐘}和{MAX}參數在錯誤消息相應地替換。

@Size(
      min = 2, 
      max = 14, 
      message = "The license plate must be between {min} and {max} characters long" 
    ) 

我在Spring應用程序中使用這種表示法,但是這些參數不被替換。 我回來「的車牌必須是最小和最大長字符之間」

我需要以不同的方式配置驗證,使這項工作?

這裏是我的配置:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
<property name="basenames"> 
<list> 
<value>messages</value> 
</list> 
</property> 
<property name="defaultEncoding" value="UTF-8"/> 
<property name="useCodeAsDefaultMessage" value="true"/> 
</bean> 

    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
     <property name="validationMessageSource" ref="messageSource"/> 
    </bean> 
+0

您使用的是哪個版本的hibernate驗證程序庫? –

+0

你可以顯示你的bean配置嗎?您是否使用自定義MessageInterpolator?使用默認消息插值器應該替換參數。 Spring在消息插值方面有幾個定製點。看到完整的配置很重要。此外,您正在驗證的環境很重要。 – Hardy

+0

我使用的是最新版本(5.1.0) – led

回答

0

我找到了原因。它是由屬性「useCodeAsDefaultMessage」引起的,我們不能將它設置爲「true」,只是使用默認值「false」。看來如果它是真的,只需從屬性文件中的「basenames」中獲取消息,並且不要在類路徑根路徑或「org/hibernate/validator」中使用默認消息文件!