【发布时间】:2015-12-24 10:16:55
【问题描述】:
我收到此错误:
No message found under code 'DuplicateKey.user.username' for locale 'sk_SK'.
关于消息文件没有正确加载的问题有很多,但我的问题是文件确实正确加载。在我的资源包中,我有两个文件: 消息属性 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。这怎么可能?
【问题讨论】:
-
我假设您的
messages.properties文件被选择用于任何其他语言环境?该文件是否包含相同的消息,并且该文件是否正常工作? -
两个错误码是一样的,但是信息都是英文的。我正在学习一个教程,首先我只有 messages.properties 文件和 Size.user.username 消息。它工作得很好。在我添加了 result.rejectValue(...) 代码和其中的第二条消息后,我得到了与现在“未找到消息 ...”相同的异常。所以我创建了 ...sk_SK 文件并将两条消息都放在那里,但使用的是斯洛伐克语。现在 Size.user.username 在斯洛伐克语中正确显示,但 DuplicateKey.user.username 出现与以前相同的错误。
-
好的,所以要完全清楚
DuplicateKey.user.username从来没有工作过,对于任何一个语言环境? -
您是否尝试在您的
catch块中将该错误键换成Size.user.username?这将告诉您问题是否出在该特定消息中或其他内容中。另外,如果您将第三个字符串添加到result.rejectValue(),会发生什么情况,默认情况下会显示吗? -
如果我尝试使用 Size.user.username,它可以工作。添加第三个参数(默认消息)也可以。
标签: java spring resourcebundle