在代码下找不到消息...关于语言环境en_US

问题描述

我知道...此类问题已由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]

解决方法

我终于找到了问题所在。实际上,代码是正确的,但是当我只需要这样做时,错误消息标识符就会通过“ {”“}”来传递:

<meta http-equiv="Content-Security-Policy" >