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

man*_*nub 5 playframework twirl

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

my.message=Click {0} to proceed
Run Code Online (Sandbox Code Playgroud)

我的template.scala.html

<p>@Messages("my.message", Html("<a href="/">here</a>"))</p>
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*jac 5

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

@Html(Messages("my.message", "<a href=\"/\">here</a>"))
Run Code Online (Sandbox Code Playgroud)

问题是当传递到 时,内部Html被转换为 a 。然后模板编译器发现返回 a ,因此对其进行转义。在外面添加另一个可以防止这种情况。StringMessagesMessagesStringHtml