freemarker 输出有问题...
[#assign optionsHTML = ""]
[#list data as item]
[#assign optionsHTML = optionsHTML + '<option value="' + item.value +'>'+ item.label + '</option>' /]
[/#list]
所以,如果我这样做
<select>
${iptionsHTML}
</select>
otions 的输出得到 html 实体而不是实际的 html....所以
<option value=" .....
即使我这样做
[#assign optionsHTML = ""]
[#list data as item]
[#noescape]
[#assign optionsHTML = optionsHTML + '<option value="' + item.value +'>'+ item.label + '</option>' /]
[/#noescape]
[/#list]
甚至尝试过
<select>
${iptionsHTML?html}
</select>
但更糟糕的是:(
Putting #noescape
around #assign
没有影响。自动转义仅适用于${...}
-s 嵌入的directly到静态文本(HTML)中。所以无法逃避在里面禁用#assign
.
?html
用于“手动”转义字符串。就像在你的例子中你可以写optionsHTML = optionsHTML + '<option value="${item.value?html}>${item.label?html}</option>'
,因为您知道该值稍后会以非自动转义的方式输出,并且${...}
字符串文字内的 -s 不会自动转义。
但是,最好的情况是您可以组织代码,以便生成 HTML 的内容不会构造 HTML 内部变量然后打印该变量,而是将 HTML 直接打印到输出中。这就是 FTL 的设计目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)