【问题标题】:No message found under code... for locale en_US在代码下找不到任何消息...对于语言环境 en_US
【发布时间】:2021-01-19 16:43:46
【问题描述】:

我知道...这种问题已经被 stackOverflow 上的其他用户报告了。尽管如此,我一直在尝试很多不同的解决方案,但都没有成功。我正在使用 spring-boot 编写一个休息微服务并将我的消息加载到文件夹下:“/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]

【问题讨论】:

    标签: java spring validation message


    【解决方案1】:

    我终于发现出了什么问题。实际上,代码是正确的,但是当我不得不这样做时,错误消息标识符是用“{”“}”传递的:

    @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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 2013-02-10
      • 1970-01-01
      • 2012-06-11
      相关资源
      最近更新 更多