【发布时间】:2015-11-24 03:49:47
【问题描述】:
.properties 文件中定义的显示错误消息有问题。
这是我的 servlet-context.xml 片段(它应该定义资源包并将其注入验证器;资源消息在其他任何地方都运行良好):
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages" />
<property name="defaultEncoding" value="UTF-8"/>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="pl"/>
</bean>
<bean name="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource" />
</bean>
这是我的属性文件的片段:
messages.forms.validation.size.between=bla bla bla
messages.forms.validation.size.between.and=and
这是一个字段定义。
@NotEmpty
@NotNull
@Size(min = 4, max = 25, message = "{messages.forms.validation.size.between} {min} {messages.forms.validation.size.between.and} {max}")
private String login;
public void setLogin(String v) { login = v; }
public String getLogin() { return login; }
我期望的是(根据:messages.forms.validation.size.between} {min} {messages.forms.validation.size.between.and} {max}")得到一个错误: bla bla bla 4 and 25,但我得到的是:
我花了几个小时试图找到一个没有成功的解决方案,所以请帮忙!
【问题讨论】:
-
我知道你在做什么,但我能问你为什么不只是简单地做 message = "Size must be between 4 and 25" 吗?不是批评只是对您为什么使用这种方式感兴趣?
-
在一个属性文件中包含所有字符串将为将来制作多语言应用程序提供一种简单的方法。
-
是的,但是为什么在 bean 中设置这样的消息,为什么不直接在属性文件中设置呢?在我的 bean 中,我只有 @Size 之类的注释,然后在属性文件中 Size.userBean.username = Username 必须至少为 6 个字符,最多为 16 个字符。并且消息在验证后显示在jsp上
-
看起来不错的解决方案,你能展示一个示例代码吗?我使用的是freemarker而不是jsp,我希望没关系。
标签: spring validation spring-mvc javabeans freemarker