将整个Freemarker数据模型公开给JavaScript?

时间:2011-12-07 18:57:17

标签: javascript freemarker

我想知道是否有一种简单的方法可以将Freemarker模板的整个数据模型公开给JavaScript,最好在整个过程中将其转换为JS对象文字。

我知道如何遍历键:

  <#list .data_model?keys as key>
  </#list>

大概我可以在模板中构建一个全局JS变量吗?

2 个答案:

答案 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}