我的情况是我必须将String附加到freemarker模板中的变量。
例如:
我有对象列表,每个都返回特定值,以便我可以将这些值存储在freemarker声明对象中,并在模板中稍后将其传递给javascript函数。
这里有一些代码片段:
// This is the list of items
[#list itemsList as item]
//here I am getting the object that I wanted to add in the template object
[#object = item.getObject()!]
//This is how I would like to append the object
[# itemsToAppendTo = "<div class="subs" id="til2"" + ${object} + "</div>"
[/#list]
//finally once loop finishes I would like to send the object to javascript
<script>
// A $( document ).ready() block.
$( document ).ready(function() {
var html = ${itemsToAppendTo}
$('.gTA').append( html )
});
此外,如果有更好的方法可以完成此任务,请提供建议。
答案 0 :(得分:2)
只需像往常一样生成输出,将其捕获到变量(html
)中,然后将其打印到JavaScript部分。
<#assign html>
<#list items as item>
<div ...>${item.object}</div>
</#list>
</#assign>
...
<#-- Attention: Remove ?markup_string if you aren't using any output format! -->
var html = "${html?markup_string?js_string}";
只有在使用?markup_string
/ HTML
/ XML
output format(或任何其他标记输出格式)时,才需要 XHTML
。如果你没有使用any,那么左手操作数就是一个字符串就会失败,所以你就会知道。
?js_string
可确保使用反斜杠转义引号等。
请注意,您还可以附加到这样的字符串:
<#assign s = 'foo'>
<#assign s += 'bar'>
${s} <#-- foobar -->
但我认为它不太实用(如果多次追加则会慢一些。)