Невозможно использовать механизм шаблонов Rythm с сервлетом 3.0

Я пытаюсь использовать механизм шаблонов Rythm с сервлетом 3.0 на tomcat7.
Я хочу отрисовать шаблон из каталога WebContent в движок Rythm. Но он не обнаруживает шаблон.

В методе сервлета init() я инициализировал движок Rthym как

public void init(ServletConfig config) throws ServletException {
        Map <String, Object> context = new HashMap <String, Object> ();
        //String filePath = new File("").getAbsolutePath();
        //filePath.concat("WebContent");
        context.put("home.template", "WebContent");
        Rythm.init(context);
    }

затем я попытался отобразить свой NewFile.html с помощью Rythm.render в методе doGet как

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Map <String, Object> args = new HashMap <String, Object> ();
        args.put("a", "World");
        PrintWriter out = response.getWriter();
        out.println(Rythm.render("NewFile.html", args));
    }

Но в браузере отображается только «NewFile.html» (не содержимое NewFile.html, а только строка «NewFile.html»


person Dheerendra    schedule 21.10.2014    source источник


Ответы (2)


У меня была аналогичная проблема с Rythm, и в моем случае это помогло написать каталог перед именем файла:

Rythm.render("templates/" + templateFileName, parameters);

Установка переменной home.template у меня тоже не сработала.

person deamon    schedule 21.10.2014
comment
Любая идея, почему это так? - person Ranveer; 22.10.2014
comment
Возможно, это ошибка в Ритме. - person deamon; 22.10.2014

Rythm загружает файлы шаблонов с помощью диспетчера ресурсов. Реализация диспетчера ресурсов по умолчанию делегирует загрузку ресурсов Thread.currentThread.getContextClassLoader(), который не может загружать какие-либо ресурсы в папку webapp. См. Разрешение корня веб-приложения из getResource.

Если вы хотите загружать шаблоны в папку webapp, вам нужно создать собственный менеджер ресурсов и делегировать его ServletContext для загрузки шаблона.

К счастью, вам не нужно этого делать. Просто поместите свои шаблоны в папку resources, и тогда все будет работать как положено. Вот простой проект доказал это:

введите здесь описание изображения

Исходный код проекта можно найти по адресу https://github.com/greenlaw110/rythm-gh-issue-241

person Gelin Luo    schedule 03.04.2015