Spring 验证没有显示保存在 属性 文件中的错误消息(freemarker 模板)
Spring validation didn't display error messages saved in property file (freemarker template)
我在显示 .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; }
我期望的是(根据:message = "{messages.forms.validation.size.between} {min} {messages.forms.validation.size.between.and} {max}")得到一个错误:
bla bla bla 4 和 25,但我得到的不是它,而是:
我花了几个小时试图找到一个没有成功的解决方案,所以请帮忙!
只需在属性文件中写入您的消息,无需在 Bean 中设置消息。下面是我如何通过属性文件显示验证错误消息。
servlet.xml:
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="com.sga.app.messages"></property>
</bean>
UserBean.java:
@NotBlank
@Size(min = 6, max = 16)
@Pattern(regexp = "^\w{6,}$")
@Id
private String username;
messages.properties:
Size.userBean.username = Username must be between 6 and 16 characters in length
register.jsp:
<li>
<label id="outputUsername">
<c:out value="Enter username:"></c:out>
</label>
<sf:input class="usernameInput" name="username" type="text"
path="username" tabindex="0" id="usernameInput" />
<sf:errors path="username" cssStyle="color:red;
font-size: small;" />
</li>
我在显示 .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; }
我期望的是(根据:message = "{messages.forms.validation.size.between} {min} {messages.forms.validation.size.between.and} {max}")得到一个错误:
bla bla bla 4 和 25,但我得到的不是它,而是:
我花了几个小时试图找到一个没有成功的解决方案,所以请帮忙!
只需在属性文件中写入您的消息,无需在 Bean 中设置消息。下面是我如何通过属性文件显示验证错误消息。
servlet.xml:
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="com.sga.app.messages"></property>
</bean>
UserBean.java:
@NotBlank
@Size(min = 6, max = 16)
@Pattern(regexp = "^\w{6,}$")
@Id
private String username;
messages.properties:
Size.userBean.username = Username must be between 6 and 16 characters in length
register.jsp:
<li>
<label id="outputUsername">
<c:out value="Enter username:"></c:out>
</label>
<sf:input class="usernameInput" name="username" type="text"
path="username" tabindex="0" id="usernameInput" />
<sf:errors path="username" cssStyle="color:red;
font-size: small;" />
</li>