从 Twirl 中的变量渲染换行符

Rendering newline charactors from variable in Twirl

我有一个玩具 Play 框架项目。我的 Java 代码是这样的:

    String r = "apple\nbanana";
    return ok(index.render(r));

我的 index.scala.html 是这样的

@(r: String)

<table border="1" style="width:98%">
<tbody>
  <tr>
    <td>@r</td>
  </tr>
</tbody>
</table>

问题是,在显示的html中,换行符没有了。我想在 html 中得到两行,但只得到一行。

我什至尝试将 Java 中的行更改为:

 String r = "apple<br>banana";

但是html仍然显示一行而不是两行, 它只是显示

"apple<br>banana"

那么如何在 Twirl 中获得两行(使换行符起作用)?

默认情况下,Twirl 从动态内容中转义所有 HTML 标签。如果你想从一个变量中渲染标签,你可以使用 @Html()。在你的情况下它会是这样的:

@(r: String)

<table border="1" style="width:98%">
<tbody>
  <tr>
    <td>@Html(r)</td>
  </tr>
</tbody>
</table>

显然换行符不起作用,因为浏览器在呈现 HTML 输出时会忽略空格。