我想在第二次生成Freemarker之前获取它的变量值。这可能吗?
我有以下Java代码:
Template temp = cfg.getTemplate("template.html");
Map<String, Object> data = new HashMap<>();
RestClient rc = new RestClient();
String id = "";//here i need "my_long_id_from_freemaker" value from Freemaker
String response = rc.somemethod (id);//returns list of items
data.put("items", response );
我的模板:
<#assign my_long_id_from_freemaker = "my_long_id_from_freemaker_value">
<div class="panel-body">
<#list items as item>
<p>${item.name}: ${item.id} <button type="button" id="${item.id}" >Details</button>
</#list>
</div>
在第一次生成页面之后,我希望能够更改“ my_long_id_from_freemaker”的值并刷新页面,这将引发对我的Java代码的另一次调用。
答案 0 :(得分:1)
由于在处理(执行)模板之前需要模板中的值,因此解析模板后该值必须已经存在。为此,您可以使用以下命令启动模板:
<#ftl attributes={"my_long_id_from_freemaker": 123}>
,然后在Template
对象上可以调用:
id = temp.getCustomAttribute("my_long_id_from_freemaker");