更新答案:
我创建了一个名为 custom.vm 的自定义宏文件:
#macro( springMessageHtml $code, $args, $defaultValue)
$springMacroRequestContext.getMessage($code, $args.toArray(), $defaultValue, false)
#end
在我的 velocity.properties 文件中,我更改了这一行以引用它:
velocimacro.library=org/springframework/web/servlet/view/velocity/spring.vm,/velocity/custom.vm
现在在我看来(比如 sample.vm),我可以这样称呼它:
#springMessageHtml("Redirecting in {0} seconds" ["<span class='seconds'>5</span>"])
较早的答案:
我在这里找到了答案:http: //feima2011.wordpress.com/2011/01/18/misc-notes/
#set($args = ["<span class='seconds'>5</span>"])
$springMacroRequestContext.getMessage("Redirecting in {0} seconds",
$args.toArray(), "", false)
#springMessageText
只是一个调用 $springMacroRequestContext.getMessage() 的宏;通过直接调用它,我可以指定最后一个参数(是否转义 HTML 的布尔值)。
现在我可以拥有未转义的 HTML。也许最终我会编写一个名为 的新宏#springMessageHtml
,它会调用 $springMacroRequestContext.getMessage() 并将 escapeHtml 参数设置为 False。然后在我看来,我只需要 1 行代码。