Spring MVC - 一个消息代码有效,另一个无效,两者都在同一个文件中
Spring MVC - one message code works, another not and both are in the same file
我收到此错误:
No message found under code 'DuplicateKey.user.username' for locale 'sk_SK'.
SO 上有很多关于消息文件加载不正确的问题,但我的问题是文件确实加载正确。在我的资源包中,我有两个文件:
messages.properties
messages_sk_SK.properties
messages_sk_SK.properties的内容是:
Size.user.username=Meno musi mat 5 az 80 znakov.
DuplicateKey.user.username=Uzivatel s takym menom uz existuje.
第一条消息正常。来自我的实体的代码:
@Size(min = 5, max = 80)
private String username;
第二个错误消息也是针对用户名的。这是来自我的控制器的代码:
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String signupPost(@Valid User user, BindingResult result) {
if (result.hasErrors()) {
return "signup";
}
user.setAuthority("user");
user.setEnabled(true);
try {
userService.create(user);
} catch (DuplicateKeyException e) {
result.rejectValue("username", "DuplicateKey.user.username");
return "signup";
}
return "accountcreated";
}
重复的用户名引发 DuplicateKeyException。这怎么可能?
好的,我解决了。根据我正在关注的教程中的评论 (link),您必须在 IntelliJ IDEA 中以另一种方式进行操作(他们在教程中使用 Eclipse)。我确实将消息文件移动到资源文件夹,所以现在我的目录结构是
src
- main
- java (sources)
- resources (messages files)
- webapp (WEB-INF, JSPs etc.)
在我的配置中 xml:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames" value="messages"/>
</bean>
您必须右键单击资源目录并将目录标记为 -> 资源文件夹。消息文件应该出现在另一个名为 Resource Bundle 'messages' 的节点中。现在它可以正常工作了。如果它在 messages_sk_SK.properties 中找不到消息,它会尝试在 messages.properties 中找到它。
我收到此错误:
No message found under code 'DuplicateKey.user.username' for locale 'sk_SK'.
SO 上有很多关于消息文件加载不正确的问题,但我的问题是文件确实加载正确。在我的资源包中,我有两个文件: messages.properties messages_sk_SK.properties
messages_sk_SK.properties的内容是:
Size.user.username=Meno musi mat 5 az 80 znakov.
DuplicateKey.user.username=Uzivatel s takym menom uz existuje.
第一条消息正常。来自我的实体的代码:
@Size(min = 5, max = 80)
private String username;
第二个错误消息也是针对用户名的。这是来自我的控制器的代码:
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String signupPost(@Valid User user, BindingResult result) {
if (result.hasErrors()) {
return "signup";
}
user.setAuthority("user");
user.setEnabled(true);
try {
userService.create(user);
} catch (DuplicateKeyException e) {
result.rejectValue("username", "DuplicateKey.user.username");
return "signup";
}
return "accountcreated";
}
重复的用户名引发 DuplicateKeyException。这怎么可能?
好的,我解决了。根据我正在关注的教程中的评论 (link),您必须在 IntelliJ IDEA 中以另一种方式进行操作(他们在教程中使用 Eclipse)。我确实将消息文件移动到资源文件夹,所以现在我的目录结构是
src
- main
- java (sources)
- resources (messages files)
- webapp (WEB-INF, JSPs etc.)
在我的配置中 xml:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames" value="messages"/>
</bean>
您必须右键单击资源目录并将目录标记为 -> 资源文件夹。消息文件应该出现在另一个名为 Resource Bundle 'messages' 的节点中。现在它可以正常工作了。如果它在 messages_sk_SK.properties 中找不到消息,它会尝试在 messages.properties 中找到它。