如果属性包含美元符号($ {var}),则无法读取属性

时间:2017-04-19 11:00:53

标签: java spring spring-boot template-engine properties-file

我的属性文件包含以下内容:

INVALID_ARGUMENT=Field ${fieldName} is invalid or missing.

我使用弹簧配置阅读:

@PropertySource("error_messages_en.properties")
@Configuration
public static class ErrorMessagesEn {
     @Value("${INVALID_ARGUMENT}")
    private String invalidArgument;
}

但在申请开始后,我看到:

Could not resolve placeholder 'fieldName' in value "Ïîëå ${fieldName} íåêîððåêòíî çàïîëíåíî èëè ïðîïóùåíî."

我需要${fieldName},因为我想使用repacer:https://stackoverflow.com/a/3655963/2674303

如何避免此错误?

2 个答案:

答案 0 :(得分:4)

您应该转义${fieldName},因为它未定义为Spring属性。

您可以查看此问题:Escape property reference in spring property file以及相关答案。

你应该写这个:

INVALID_ARGUMENT=Field #{'$'}{fieldName} is invalid or missing.

答案 1 :(得分:0)

如果您使用的是Yaml文件,则需要用引号将值引起来

参数:“字段#{'$'} {fieldName}无效或丢失。”