如何在 freemarker 模板中附加字符串
How to append String in freemarker template
我遇到了必须将字符串附加到 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 )
});
另外,如果有更好的方法来完成这个任务,请提出建议。
像往常一样生成输出,将其捕获到一个变量中(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
/XHTML
output format(或任何其他标记输出格式)时才需要。如果你不使用任何,它会失败说左边的操作数是一个字符串,所以你会知道。
?js_string
确保引号等将用反斜杠转义。
请注意,您还可以像这样附加到字符串:
<#assign s = 'foo'>
<#assign s += 'bar'>
${s} <#-- foobar -->
但我猜它不太实用(如果你追加很多次,速度会变慢)。
我遇到了必须将字符串附加到 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 )
});
另外,如果有更好的方法来完成这个任务,请提出建议。
像往常一样生成输出,将其捕获到一个变量中(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
/XHTML
output format(或任何其他标记输出格式)时才需要。如果你不使用任何,它会失败说左边的操作数是一个字符串,所以你会知道。
?js_string
确保引号等将用反斜杠转义。
请注意,您还可以像这样附加到字符串:
<#assign s = 'foo'>
<#assign s += 'bar'>
${s} <#-- foobar -->
但我猜它不太实用(如果你追加很多次,速度会变慢)。