深色模式
标准消息解析器
那么 StandardMessageResolver 是如何查找特定模板中请求的消息的呢?
若模板名称为 home,且其路径为 /WEB-INF/templates/home.html,同时请求的区域设置为 gl_ES,那么该解析器会按以下优先级顺序查找消息文件,找到第一个匹配的文件后停止查找:
/WEB-INF/templates/home_gl_ES.properties(精确匹配:语言+地区)/WEB-INF/templates/home_gl.properties(降级匹配:仅语言)/WEB-INF/templates/home.properties(默认匹配:无语言/地区)
有关完整的消息解析机制的工作原理,可参考 StandardMessageResolver 类的 JavaDoc 文档以获取更多细节。
关键细节解析
路径关联规则: 消息文件的基础路径与模板文件的路径完全一致(上例中模板在
/WEB-INF/templates/下,消息文件也优先在该目录查找),无需额外配置路径映射,实现「模板与对应消息文件同目录管理」。Locale 匹配逻辑: 遵循「精确→降级→默认」的顺序:
- 先匹配「语言_地区」(如
gl_ES); - 匹配不到则降级到「仅语言」(如
gl); - 最后匹配无 Locale 后缀的默认文件(如
home.properties)。
- 先匹配「语言_地区」(如
扩展说明: 若需了解完整的消息解析机制(如 Locale 为空、模板路径含多级目录等场景),可参考
StandardMessageResolver类的 JavaDoc 文档,其中包含所有边界场景的处理规则。
总结
StandardMessageResolver按「模板同目录 + Locale 精准度递减」的顺序查找消息文件;- 查找优先级:
模板名_语言_地区.properties>模板名_语言.properties>模板名.properties; - 消息文件与模板文件同目录存放,简化了国际化消息的管理,是 Thymeleaf 国际化的核心实现方式之一。
