如何在freemarker中呈现原始html?

时间:2018-01-15 16:07:53

标签: java html view freemarker

我有这样的模板:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>

<table align="center" border="0" cellpadding="0" cellspacing="0" width="800" style="border-collapse: collapse;">

    <p>server response: ${response}</p>
    ...
</table>

</body>
</html>

实际上服务器可以获得任何响应。

在某些情况下,服务器返回html,freemarker将其解析为html,看起来很糟糕。

我想用标签显示用户行html,依此类推:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>

我该怎么做?

1 个答案:

答案 0 :(得分:3)

启用HTML自动转义功能,因此${response}不会呈现为HTML(因此您可以避免XSS漏洞)。使用<#ftl output_format="HTML">启动文件即可。虽然推荐使用ftlh文件扩展名,然后将incompatible_improvements设置为至少2.3.24,或将recognize_standard_file_extensions设置为true

如果您因某些原因不想使用自动转义功能,可以写${response?html}

由于空白区域不应被浏览器折叠,您当然也希望将插值放入HTML pretextareadiv某个班级有white-space: pre-wrap