【问题标题】:getting error with freemarker template integration with spring internationlizationfreemarker 模板与 spring 国际化集成时出错
【发布时间】:2017-11-29 16:35:46
【问题描述】:
我正在使用 freemarker 模板生成电子邮件。我将freemarker与spring结合使用。我很难通过参数替换来实现国际化。我让它为一个参数替换工作。
示例:
message.hello = 你好,{0}
在调频模板中
我有类似的东西
但是,我无法弄清楚我们如何为多个参数替换做到这一点。
message.greet = 您好 {0},欢迎来到 {1}
如何在模板中表示它?
当我尝试以下操作时:
它不起作用。你能帮忙吗?
问候
【问题讨论】:
标签:
templates
internationalization
freemarker
【解决方案1】:
查看Spring源代码中的spring.ftl,该宏定义为<#macro messageArgs code, args>${springMacroRequestContext.getMessage(code, args)}</#macro>,这是有问题的,因为org.springframework.web.servlet.support.RequestContext中的getMessage有几个重载,你想调用getMessage(String code, Object[] args)或getMessage(String code, List<?> args) .所以你想要这个:
<@spring.messageArgs "message.greet", [name, place] />
请注意,因为还有getMessage(String code, String defaultValue) 重载,所以即使您只有1 个参数,您也需要使用[],否则它将是默认值。