gpt4 book ai didi

java - 验证期间未使用 Spring MessageSource

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:49:25 24 4
gpt4 key购买 nike

我无法在我的表单支持对象的 Spring 验证期间使用 messages.properties 中的消息。

应用程序配置文件:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
</bean>

WEB-INF/classes/messages.properties:

NotEmpty=This field should not be empty.

表单支持对象:

...
@NotEmpty
@Size(min=6, max=25)
private String password;
...

当我遍历 BindingResult 中的所有错误并输出 ObjectError 的 toString 时,我得到了这个:

Field error in object 'settingsForm' on field 'password': rejected value []; codes [NotEmpty.settingsForm.password,NotEmpty.password,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [settingsForm.password,password]; arguments []; default message [password]]; default message [may not be empty]

如您所见,默认消息是“不得为空”,而不是我的消息“此字段不应为空”。

如果我将 messageSource 注入(inject) Controller 并输出以下内容,我确实会收到正确的消息:messageSource.getMessage("NotEmpty", new Object [] {"密码"}, "默认空消息", null);

那么为什么不使用我的 messages.properties 进行验证?我正在运行 Spring 3.1.1。谢谢!

最佳答案

默认情况下,HibernateValidator 将从 /WEB-INF/classes/ValidationMessages.properties 获取所有消息,它自己直接读取此文件,而不是通过 Spring MessageSource。

如果你想要来自 Spring Message 源的翻译,请在 LocalValidatorFactoryBean 上设置一个.这确实需要您在调度程序 servlet 中手动设置验证 bean,而不是依赖 mvc:annotation-driven。

关于java - 验证期间未使用 Spring MessageSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com