Html 传递给@Messages 的参数在 Play Framework 中被转义

Html parameter passed to @Messages gets escaped in Play Framework

我想将 HTML 文本作为参数传递给 Twirl 模板中的消息,但是当呈现模板时,HTML 被转义。例如,如果我的 messages 文件有:

my.message=Click {0} to proceed

我的template.scala.html

<p>@Messages("my.message", Html("<a href="/">here</a>"))</p>

当我在浏览器中打开页面时,<a href="/"here</a> 部分被转义,因此我没有可点击的 link。有什么办法可以实现吗?

您应该将 Html 的使用移到外面,或者将其保留在两个地方。

@Html(Messages("my.message", "<a href=\"/\">here</a>"))

问题是内部 Html 在传入 Messages 时被转换为 String。然后模板编译器看到 Messages returns a String,所以它转义它。在外面添加另一个 Html 将防止这种情况发生。