Пустой вывод ритма при использовании @extends

У меня есть интересная проблема. Я пытаюсь интегрировать механизм шаблонов Rythm в свое приложение Spring MVC, поэтому я написал простой преобразователь представления, который вызывает RythmeEngine для рендеринга файлов. Однако, когда я пытаюсь использовать @extends(...), движок возвращает пустой рендер. У меня есть два файла шаблона:

layout.html

<!DOCTYPE html>
<html>
<head>
    <title>Rythm Sandbox</title>
</head>
<body>
    <h1>Welcome!</h1>
    @render()
</body>
</html>

ритм.html

@extends(layout)
Hello World!

Я вызываю RythmEngine следующим образом:

RythmEngine eng = RythmEngineFactory.getEngine();
File f = new File(someRootPath + name + ctx.getSuffix());
resp.setContentType("text/html");
eng.render(httpResponse.getWriter(), f, model);

И RythmEngineFactory.getEngine() возвращает синглтон RythmEngine со следующей конфигурацией:

Map<String, Object> props = new HashMap<String, Object>();
props.put("engine.mode", "dev");
props.put("home.template.dir", myTemplateRootDirectoryPath);
return new RythmEngine(props);

Проблема

Вот проблема: без строки @extends(layout) в ритме.html я получаю визуализацию «Hello World», как и ожидалось. Однако, когда я пытаюсь расширить layout.html, это приводит к пустому рендерингу (т. е. вообще никакого вывода). Я знаю, что он находит файл layout.html, потому что, если я заменю @extends(layout) чем-то вроде @extends(layoutGooBlah), появится сообщение об ошибке «Не удается найти расширенный шаблон по имени 'layoutGooBlah'». Итак, я знаю, что он находит мой шаблон в порядке, но почему вывод будет пустым??

Редактировать:

Интересное явление: когда я меняю эту строку:

eng.render(httpResponse.getWriter(), f, model);

To:

String s = eng.render(f, model);
httpResponse.getWriter().write(s);

Оно работает. ??? Почему он не записывает в PrintStream при использовании @extends??


person Jrop    schedule 21.02.2014    source источник


Ответы (1)


API engine.render(writer, ...) глючит. См. https://github.com/greenlaw110/Rythm/issues/201.

Кстати, я рекомендую вам использовать http://github.com/greenlaw110/spring-rythm для вашего весеннее приложение MVC

person Gelin Luo    schedule 21.02.2014
comment
Спасибо, я даже не знала, что весенний ритм существует, это здорово! - person Jrop; 22.02.2014
comment
К сожалению, пока нет документации для spring-rythm. Но есть примеры приложений, на которые вы можете сослаться: github.com/greenlaw110/spring-rythm-samples - person Gelin Luo; 22.02.2014