Визуализация списка в шаблоне Freemarker из Spark web Framework

У меня есть следующий метод, который отображает список пользователей в шаблоне, но я получил внутреннюю ошибку 500 при запуске Spark в IntelliJ.

private void renderTemplate() throws IOException, TemplateException {
        List<String> users = new ArrayList<>();
        users.add("John Doe");
        users.add("Tony Doe");

        get("/admin", (request, response) -> {
           return new ModelAndView(users, "spark/template/freemarker/admin_template.ftl");
        }, new FreeMarkerEngine());
    }

Содержимое моего файла admin_template.ftl:

<html>
<head>
    <title>Administration</title>
</head>
<body>


<h1>My Admin</h1>

<#list users as user>
    <h2>$user</h2>
</#list>
</body>
</html>

Кто-нибудь знает, как отобразить список в шаблоне freemarker? спасибо за ответы!


person TonyGW    schedule 15.05.2014    source источник
comment
tonygw: ответ @nwk работает нормально, а также для обнаружения ошибки. вы можете включить один файл error.ftl и вызвать его для отображения любого сообщения об ошибке. В основном попробуйте использовать блок try/catch. поэтому, когда вы получаете сообщение об ошибке, либо зарегистрируйте его. и отобразить эту страницу ошибки. и таким образом вы можете увидеть журналы, чтобы найти ошибку   -  person govindpatel    schedule 15.02.2016


Ответы (1)


Чтобы отобразить изменение списка

<#list users as user>
    <h2>$user</h2>
</#list>

to

<#list users as user>
    <h2>${user}</h2>
</#list>

в admin_template.ftl и измените renderTemplate следующим образом:

private void renderTemplate() throws IOException, TemplateException {
        List<String> users = new ArrayList<>();
        users.add("John Doe");
        users.add("Tony Doe");

        Map<String, Object> attributes = new HashMap<>();
        attributes.put("users", users);    

        get("/admin", (request, response) -> {
           return new ModelAndView(attributes, "spark/template/freemarker/admin_template.ftl");
        }, new FreeMarkerEngine());
    }

Если это не решит проблему, может быть отдельная проблема с FreeMarkerEngine, которая вызывает сообщения об ошибках "500 Internal Error", а именно, что ваш объект FreeMarkerEngine не может найти файл шаблона admin_template.ftl во время выполнения. См. ответ на FileNotFoundException при загрузке шаблона freemarker в java, чтобы узнать, как с этим справиться.

person nwk    schedule 09.09.2014