jQuery或Underscore.js模板在thymleaf中导致XML解析器错误

时间:2014-04-03 18:21:37

标签: xml parsing underscore.js thymeleaf underscore.js-templating

我的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模板库不会理解它。

有什么想法吗?

3 个答案:

答案 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>