суббота, 12 мая 2012 г.

FreeMarker. Продолжение.

Сегодня почти весь день убил на то, чтобы справиться с проблемой: на рабочей станции в среде разработки FreeMarker отлично считывает и заполняет шаблон.

Как только я ставлю портлет на сервер, то на выходе я получаю пустой шаблон! В логах никаких ошибок, включение логов в режим DEBUG тоже ничего дало - FreeMarker находит мой шаблон, но на выходе отдаёт пустой текст. Детальное исследование показало, что FreeMarker считывает шаблон пустым. Додумался проверить кодировку текста шаблона - формально файл был закодирован в UTF-8, но видимо при просмотре или редактировании шаблона кодировка слетела. После приведения файла в UTF-8 мой шаблон заработал на сервере!

Жаль потраченного времени, но зато это помогло мне разобраться получше в API FreeMarker.

пятница, 11 мая 2012 г.

FreeMarker

Возникла у меня задача: есть в наличии html шаблон, который надо заполнять данными и отправлять на e-mail. Сначала я подумал, а почему не забить шаблон в код? И как потом поддерживать получившееся Г?

Следующей мыслью было - вынести шаблон в отдельный файл. Это уже лучше. Но возникает следующая проблема - нужно придумывать свой язык для обозначения позиций, где необходимо осуществить подстановку. Поэтому это мысль тоже отпала.

В результате поисков выбор пал на библиотеку FreeMarker (http://freemarker.sourceforge.net/). Библиотека занимает почти 1 мегабайт. Поддерживает java 1.2 и выше. Библиотека является мощным движком для генерации текста по шаблону.

Поддерживает вычисления внутри шаблоне. Надо сказать, что вычисления осуществляются через BigDecimal. Поддерживаются директивы.

Также есть сносная документация, которая описывает все плюшки более подробно.

Конкурентом этой библиотеки является Apache Velocity. Опыта работы с этой библиотекой не было, но судя по форумам народ от неё не в сильном восторге.