ThymalLeaf 3、attoparser、CDATA和带有脚本标记的HTML模板
我努力使用SpringBoot1.3.5,它依赖于旧的Thymeleaf2.x系列,试图在ThymalLeaf 3、attoparser、CDATA和带有脚本标记的HTML模板,html,templates,thymeleaf,Html,Templates,Thymeleaf,我努力使用SpringBoot1.3.5,它依赖于旧的Thymeleaf2.x系列,试图在scripttag中传递HTML模板: <script type="text/template" id="catTmpl"> <![CDATA[ <b><%=name%></b> ]]> </script> 经过一些操作后,它被正确地传递,但使用CDATA包装呈现,这破坏了JS模板(在我的例子中,undescore.JS)
script
tag中传递HTML模板:
<script type="text/template" id="catTmpl">
<![CDATA[
<b><%=name%></b>
]]>
</script>
经过一些操作后,它被正确地传递,但使用CDATA包装呈现,这破坏了JS模板(在我的例子中,undescore.JS
):
我看到一些博客,发现ThymalLeaf 3使用了不同的解析器。检查:
$ gradle dependencies
| | +--- org.thymeleaf:thymeleaf:3.0.6.RELEASE
| | | +--- org.attoparser:attoparser:2.0.4.RELEASE
该解析器假定script
包含CDATA,而上述代码在没有CDATA的情况下可以正常工作
什么是
Thymeleaf 3是否已准备好通过
script
(或HTML5template
)标记传递HTML模板,而无需CDATA废话 attoparser
来自项目主页:
- 易于使用。只需要几行代码。不再需要担心JDK的解析器API版本
- 要快。和最快的标准解析器一样快。在许多情况下,速度更快
- 提供强大的界面。考虑良好的可选性,行+列位置,重构原始文档的能力等。
- 以简化您的解析体验。通过消除对验证或实体解析的担忧,这在许多情况下都是不必要的
attoparser
中所写,attoparser设计用于与Thymeleaf一起工作
它能够解析HTML(因此无需关闭
),但解析器接受
,这是无效的HTML5。Thymeleaf 2也接受这一点,但生成有效的
,Thymeleaf 3不接受。小心
根据attoparser
将script
正文解释为CDATA,仅适用于:
默认情况下,所有这些替代品不应被视为CDATA(除非它们被明确地封装在CDATA节中),所以在以下情况下仅考虑CDATA的内容应该是一个好主意:
- 无类型
- 类型是以下类型之一:javascript、ecmascript、text/javascript、text/ecmascript、application/javascript、application/ecmascript
_.template($("#catTmpl").html())
$ gradle dependencies
| | +--- org.thymeleaf:thymeleaf:3.0.6.RELEASE
| | | +--- org.attoparser:attoparser:2.0.4.RELEASE