Разоблачение всей модели данных Freemarker в JavaScript? - PullRequest
2 голосов
/ 07 декабря 2011

Мне интересно, есть ли простой способ представить всю модель данных шаблона Freemarker в JavaScript, предпочтительно преобразовав его в литерал объекта JS где-нибудь по пути.

Я знаю, как перебирать ключи:

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

И, вероятно, я мог бы создать глобальную переменную JS внутри шаблона как таковую?

Ответы [ 2 ]

4 голосов
/ 08 декабря 2011

Вы можете пройти через всю модель данных с помощью FreeMarker и затем создать «исходный код» для соответствующего объекта JSON, но вам придется иметь дело с такими вещами, как экранирование строк (например, с помощью встроенной js_string ) и потенциально большие (рекурсивные) графы объектов.

Несколько лет назад я написал общую модель данных "dumper", которая выводит красивое древовидное представление модели данных FreeMarker.Это, вероятно, не совсем то, что вы хотите или нужно, но, возможно, это вдохновение.Вы можете найти это здесь .

0 голосов
/ 23 мая 2015

Вы также можете просто использовать Jackson или любой другой json api, чтобы преобразовать объект в json, а затем добавить строку json в модель.

Пример использования пружины 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}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...