如何从 Freemarker 将值加载到 Java?

How to load value into Java from Freemarker?

我想在第二次生成之前从 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 代码的另一个调用。

由于在处理(执行)模板之前需要模板中的值,因此在解析模板后该值必须已经存在。为此,您可以使用以下命令启动模板:

<#ftl attributes={"my_long_id_from_freemaker": 123}>

然后在 Template 对象上你可以调用:

id = temp.getCustomAttribute("my_long_id_from_freemaker");