我可以在视图中转义多行代码段吗?

时间:2011-11-21 13:19:14

标签: java view escaping playframework multiline

我需要生成一个多行HTML代码段,以便转义并呈现给用户。

这是我希望用户获得的原始HTML:

<h1>Here is your HTML:</h1>
<div>
  &lt;script&gt;
    alert("Hello world");
  &lt;/script&gt;
</div>

将呈现为:

Here is your HTML:

<script>
  alert("Hello world");
</script>

我发现在视图中编写${'<script>alert("Hello world");</script>'}确实会逃避它,但这似乎不适用于${''}$内的多行字符串 - 我收到了以下错误:

expecting anything but ''\n''; got it anyway

目前是否有办法在视图中转义多行字符串? (不从控制器传递字符串或类似的东西)

2 个答案:

答案 0 :(得分:1)

更好的方法可能是使用escape()。raw():



    ${ "<script> alert(\"Hello world\"); </script>".escape().raw() }

答案 1 :(得分:0)

我似乎错过了最明显的解决方案:使用${''}的多个实例:

<h1>Here is your HTML:</h1>
<div>
<pre>
${'<script>'}
  alert("Hello world");
${'</script>'}
</pre>
</div>