我的HTML文件中有一个下划线或jQuery模板。它类似于:
<script type="text/template" id="myId">
<h1><%=catalog.title %></h2>
<div class="action">
<% if(isGood) { %>
we are good
<% } else { %>
we are not good
<% } %>
</div>
</script>
如果我把它放在.jsp文件或.vm文件中,那就完全没了。
但是如果使用ThymeLeaf,那么我将有一个解析问题。我想这是由百万美元的XML解析器引起的。它不允许像“&lt;%”这样的东西。
我无法使用CDATA,因为如果我这样做,那么CDATA将成为模板的一部分(由Underscore.js库使用)。
我无法改变“&lt;”到“&amp; lt;”。 Underscore.js / jQuery模板库不会理解它。
有什么想法吗?
答案 0 :(得分:1)
为了避免Thymeleaf解析器异常,您可能希望根据underscore.js documentation将ERB样式分隔符更改为Mustache.js样式(或任何其他样式),只需在任何其他Underscore之前插入以下JavaScript代码即可.JS相关代码:
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g
};
示例:而不是
<h1><%=catalog.title %></h2>
你会写
<h1>{{ catalog.title }}</h2>
答案 1 :(得分:1)
使用Handlebars.js模板(使用{{foo}}表示法)时,我遇到了同样的问题。对我来说,将Thymeleaf设置为HTML5 Legacy Template mode工作(按照here给出的建议)。我还必须将nekohtml添加到类路径中。
答案 2 :(得分:1)
经过数周的徒劳,我终于能够在绊倒this similar Thymeleaf-Ember question and answer之后,在Thymeleaf XHTML模式的范围内呈现一个Underscore模板。 CDATA和Thymeleaf标签的所有排列都失败了,直到我在CDATA标签之后插入了一个额外的随机评论,如下:
<script type="text/template" id="my-template">
<![CDATA[
<!-- guard comment to prevent browsers from considering the previous and next lines as part of a comment -->
<tr>
<td><%- myParam%></td>
</tr>
<!-- ]]> -->
</script>