英文:
No message found under code... for locale en_US
问题
我知道...这种问题已经被其他用户在整个StackOverflow上报告过。尽管如此,我尝试了许多不同的解决方案,但都没有成功。我正在使用spring-boot编写一个REST微服务,并在文件夹"/src/main/resources"下加载我的消息。
在同一个文件夹中有三个不同的消息文件:
- messages.properties;
- messages_en_US.properties
- messages_pt_BR.properties
我的Bean验证消息映射如下:
@NotBlank(message = "{customer.input.password.notblank}")
@Length(max = 12, message = "{customer.input.password.maxlength}")
@NotNull(message = "{customer.input.password.notnull}")
@ValidPassword(message = "{customer.input.password.invalid}")
private String password;
我的MessageSource Bean 在主Spring Boot类中进行了定义:
@Bean(name = "messageSource")
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
Locale.setDefault(Locale.US);
messageSource.setBasename("/WEB-INF/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
我有一个负责从文件获取消息的实用类:
package com.rumblesoftware.utils;
import java.util.Locale;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Component;
@Component
public class PostOfficer {
@Autowired
@Qualifier(value = "messageSource")
private MessageSource ms;
public String getMessage(String messageId) {
return ms.getMessage(messageId, null, Locale.getDefault());
}
}
最后,当我尝试使用无效密码时出现的错误消息如下:
org.springframework.context.NoSuchMessageException: No message found under code '{customer.input.password.invalid}' for locale 'en_US'.
at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:161) ~[spring-context-5.2.7.RELEASE.jar:5.2.7.RELEASE]
英文:
I know... this kind of issue was already reported by other users all over the stackOverflow. Even though, I've been trying a lot of different solutions without success. I'm coding a rest microservice using spring-boot and loading my messages under the folder: "/src/main/resources"
There are three different message files in the same folder:
messages.properties;
messages_en_US.properties
messages_pt_BR.properties
My bean validation message is mapped this way:
@NotBlank(message = "{customer.input.password.notblank}")
@Length(max = 12,message="{customer.input.password.maxlength}")
@NotNull(message="{customer.input.password.notnull}")
@ValidPassword(message = "{customer.input.password.invalid}")
private String password;
My MessageSource bean is defined in my main spring boot class.
@Bean(name="messageSource")
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
Locale.setDefault(Locale.US);
messageSource.setBasename("/WEB-INF/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
I've an utility class responsible to get the messages from the file:
package com.rumblesoftware.utils;
import java.util.Locale;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Component;
@Component
public class PostOfficer {
@Autowired
@Qualifier(value = "messageSource")
private MessageSource ms;
public String getMessage(String messageId) {
return ms.getMessage(messageId,null,Locale.getDefault());
}
}
finally the error message when i try an invalid password
org.springframework.context.NoSuchMessageException: No message found under code '{customer.input.password.invalid}' for locale 'en_US'.
at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:161) ~[spring-context-5.2.7.RELEASE.jar:5.2.7.RELEASE]
答案1
得分: 2
我终于找到了问题出在哪里。实际上,代码是正确的,但错误消息标识符在传递时带有"{" "}",而我只需要这样做:
@NotBlank(message = "customer.input.password.notblank")
@Length(max = 12,message="customer.input.password.maxlength")
@NotNull(message="customer.input.password.notnull")
@ValidPassword(message = "customer.input.password.invalid")
英文:
I have finally found out what was going wrong. Actually, the code was right but the error message identifier was being passed with "{" "}" when I just had to do this way:
@NotBlank(message = "customer.input.password.notblank")
@Length(max = 12,message="customer.input.password.maxlength")
@NotNull(message="customer.input.password.notnull")
@ValidPassword(message = "customer.input.password.invalid")
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论