我有类似的东西:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>...</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8"/>
<property name="fallbackToSystemLocale" value="false"/>
<property name="useCodeAsDefaultMessage" value="true"/>
</bean>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource"/>
</bean>
还有一些使用此消息的自定义验证器(具有values
属性):
validation.constraints.PossibleValues.message=The provided value "${validatedValue}" is invalid. Possible values: {values}
问题是{
和}
在AbstractMessageInterpolator#interpolateMessage
不再存在,所以我没有得到参数插值。
我试过像'{'validatedValue'}'
,\\{
这样的各种逃脱没有成功。
在这种情况下,有人知道如何转义消息参数吗?
(我看到this question,但它没有帮助)
我使用的是几乎相同的配置:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="defaultEncoding" value="ISO-8859-1" />
<property name="fallbackToSystemLocale" value="false" />
<property name="useCodeAsDefaultMessage" value="false" />
<property name="basenames" value="classpath:applicationMessages,classpath:ValidationMessages"/>
</bean>
在我的ValidationMessages.properties中,我使用简单的{和}覆盖了一些加利西亚语言的消息,用于插值变量。例如:
javax.validation.constraints.Min.message=debe ser maior o igual a {value}
...
org.hibernate.validator.constraints.Length.message=debe ter unha lonxitude entre {min} e {max}
唯一奇怪的行为是,如果你想要单引号,你需要用一个引号来逃避它:
org.hibernate.validator.constraints.ScriptAssert.message=o script ''{script}'' non devolve true
希望这可以帮助。