gpt4 book ai didi

java - 如何在 Velocity 中将 HTML 注入(inject)到 springMessageText 的 {0} 中?

转载 作者:行者123 更新时间:2023-12-02 06:47:05 25 4
gpt4 key购买 nike

我在国际化 Spring MVC 网站中使用 Apache Velocity。

我想使用“在 X 秒内重定向”作为我的翻译人员将翻译的短语(消息键)。 X 显然是可变的秒数,Javascript 会每秒更新页面以进行倒计时。

我想我会这样做:

#springMessageText("Redirecting in {0} seconds" ["<span class='seconds'>5</span>"])

但这显示:

Redirecting in <span class='seconds'>5</span> seconds

(不解析 HTML)。

需要能够将 HTML 标记放在那里,因为这样 javascript 才能知道要更新翻译短语的哪一部分。

我做错了什么?

最佳答案

更新的答案:

我创建了一个名为 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

现在在我的 View 中(如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() 的宏;通过直接调用它,我可以指定最后一个参数(一个 boolean 值,表示是否转义 HTML)。

现在我可以得到未转义的 HTML。也许最终我会编写一个名为 #springMessageHtml 的新宏。 ,并且它将调用 $springMacroRequestContext.getMessage() 并将 escapeHtml 参数设置为 False。那么在我看来,我只需要 1 行代码。

关于java - 如何在 Velocity 中将 HTML 注入(inject)到 springMessageText 的 {0} 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18538057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com