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);

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

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号