Невозможно использовать шаблонизатор 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"
2 ответа
У меня была похожая проблема с Rythm, и в моем случае это помогло написать каталог перед именем файла:
Rythm.render("templates/" + templateFileName, parameters);
Настройка home.template
Переменная не работает для меня тоже.
Rythm загружает файлы шаблонов с помощью менеджера ресурсов. Реализация менеджера ресурсов по умолчанию делегирует загрузку ресурса Thread.currentThread.getContextClassLoader()
, который не может загружать какие-либо ресурсы под webapp
папка. См. Разрешение корня веб-приложения из getResource.
Если вы хотите загрузить шаблоны под webapp
папку, вам нужно создать свой собственный менеджер ресурсов и делегировать ServletContext
загрузить шаблон.
К счастью, вам не нужно этого делать. Просто поместите ваши шаблоны под resources
папка и тогда она будет просто работать как положено. Вот простой проект доказал это:
Исходный код проекта можно найти по адресу https://github.com/greenlaw110/rythm-gh-issue-241