java - 未检测到 Spring MessageSource 属性文件第一行
问题描述
我正在使用 Spring 4 并使用 MessageSource 进行本地化。
我的 xml 文件有:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:i18n/myfile"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
本地化文件之一 myfile_nl.properties 具有:
prop1=abc
other1=o1
other2=o2
other3=o3
获取本地化字符串的 Java 代码是:
@Autowired
private MessageSource messageSource;
String localizedMsg = messageSource.getMessage("prop1", null, locale);
现在,我得到了没有找到 prop1 的异常。因此,我编辑了属性文件,以便稍后在文件中复制 prop1。
other1=o1
other2=o2
prop1=abc
other3=o3
现在检测到prop1。
为什么 prop1 在第一行时没有被检测到?
解决方案
您的 UTF-8 属性文件可能以 BOM(字节顺序标记)开头。
由于 Java 不做 BOM,3 字节的 BOM被视为不可显示的 BOM 字符,并成为第一行列出的属性名称的一部分,这当然会使其不匹配。
在可以在没有 BOM 的情况下保存文件的文本编辑器中编辑文件。
Notepad++ 就是这样一个文本编辑器的一个例子。请参阅:删除文件中的 BOM 字符。
推荐阅读
- android - AudioRecording 在某些设备上不起作用
- perl - "if (-f $file_path1) {" 始终为真,无论文件是否存在
- angular - ngx-bootstrap - 输入的时间选择器弹出窗口
- python - apache气流中的本地模块代码更新
- arrays - 使用 laravel 多数组到单数组
- vba - 仅在某些列中按 Enter 后清除单元格
- powershell - 从 UNC 路径获取 ShareName
- python - Python imaplib 使用日期和时间搜索电子邮件
- sql - Dm_exec_describe_first_result_set_for_object 在迭代 ctes 上返回空值
- asp-classic - ASP-Classic - 自从今年最近的一次 Windows 更新以来,为类中的字段分配值真的很慢