我正在使用freemarker模板生成电子邮件。我将freemarker与spring结合使用。我很难通过参数替换来实现国际化。我让它用于一个参数替换。 例如:
在fm模板中message.hello = Hello,{0}
我有类似
的东西< @ spring.messageArgs" message.hello" name />
但是,我无法弄清楚我们是如何为多个param替换做的。
message.greet = Hello {0},欢迎来到{1}
我怎样才能在模板中表示这一点? 当我尝试以下内容时:
< @ spring.messageArgs" message.greet"姓名,地点/>
它不起作用。你能帮忙吗? 问候
答案 0 :(得分:1)
在Spring源代码中查看ExecutorService es = Executors.newCachedThreadPool();
List<GitUser> result =
es.invokeAll(
Stream.of(service1, service2, service3)
.<Callable<GitUser>>map(s -> s::getGitUser)
.collect(Collectors.toList())
) .stream()
.map(future -> {
try { return future.get(); }
catch (InterruptedException|ExecutionException ex) {
throw new IllegalStateException(ex);
}
})
.collect(Collectors.toList());
,该宏定义为spring.ftl
,这有问题,因为<#macro messageArgs code, args>${springMacroRequestContext.getMessage(code, args)}</#macro>
中的getMessage
有多个重载,并且您希望致电org.springframework.web.servlet.support.RequestContext
或getMessage(String code, Object[] args)
。所以你想要这个:
getMessage(String code, List<?> args)
请注意,因为还有<@spring.messageArgs "message.greet", [name, place] />
重载,即使您只有1个参数,也需要使用getMessage(String code, String defaultValue)
,否则它将是默认值。