Thymeleaf 教程

消息解析器

我们没有为我们的 Grocery 应用程序明确指定一个消息解析器实现,正如之前所解释的,这意味着正在使用的实现是 org.thymeleaf.messageresolver.StandardMessageResolver 对象。

StandardMessageResolver 是 IMessageResolver 接口的标准实现,但如果我们愿意,可以创建我们自己的,适应我们应用程序的具体需求。

注意:Thymeleaf + Spring 集成包默认提供了一个 IMessageResolver 实现,它使用标准的 Spring 方式来检索外部化消息,即使用在 Spring 应用上下文中声明的 MessageSource Bean。

标准消息解析器

那么,StandardMessageResolver 是如何在一个特定的模板中寻找所请求的消息呢?

如果模板名称是 home,并且位于 /WEB-INF/templates/home.html 中,请求的 locale 是 gl_ES,那么这个解析器将在以下文件中寻找消息,按照这个顺序:

  1. /WEB-INF/templates/home_gl_ES.properties

  2. /WEB-INF/templates/home_gl.properties

  3. /WEB-INF/templates/home.properties

请参考 StandardMessageResolver 类的 JavaDoc 文档,以了解完整的消息解析机制如何工作的更多细节。

配置消息解析器

如果我们想在模板引擎中添加一个消息解析器(或更多),该怎么办?很简单。

// 对于只设置一个
templateEngine.setMessageResolver(messageResolver);

// 对于设置一个以上的
templateEngine.addMessageResolver(messageResolver);

为什么我们要有一个以上的消息解析器呢?与模板解析器的原因相同:消息解析器是有顺序的,如果第一个解析器不能解析一个特定的消息,就会询问第二个,然后是第三个,等等。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号