我想知道是否有一种简单的方法可以将Freemarker模板的整个数据模型公开给JavaScript,最好在整个过程中将其转换为JS对象文字。
我知道如何遍历键:
<#list .data_model?keys as key>
</#list>
大概我可以在模板中构建一个全局JS变量吗?
答案 0 :(得分:4)
您可以使用FreeMarker遍历整个数据模型,然后为相应的JSON对象生成“源代码”,但是您必须处理字符串转义(例如使用js_string builtin)和潜在的事情。大型(递归)对象图。
几年前,我写了一个通用数据模型“dumper”,它打印出FreeMarker数据模型的漂亮树形表示。这可能不是你想要或需要的,但也许它是一种灵感。你可以找到它here。
答案 1 :(得分:0)
您也可以使用Jackson或任何其他json api将对象转换为json,然后将json字符串添加到模型中。
使用spring MVC的示例:
@RequestMapping(value = "/test", method = RequestMethod.GET)
public ModelAndView test() throws Exception {
String output = new ObjectMapper().writer().withDefaultPrettyPrinter().writeValueAsString(new HashMap<String, Object>());
Map<String, Object> model = new HashMap<>();
model.put("result", output);
return new ModelAndView("page", "model", model);
}
在freemarker中
$ {model.result}