Теги JSP в шаблоне Freemarker

Я хочу использовать некоторые пользовательские теги в шаблоне freemarker, что достаточно просто, поскольку я могу включить JspSupportServlet в свой файл web.xml и включить следующую строку в шаблон.

<#assign my=JspTaglibs["/WEB-INF/mytaglib.tld"] />

Однако как мне это сделать, если .tld упакован в файл JAR внутри каталога META-INF? Я попробовал оба из них без везения.

<#assign my=JspTaglibs["/META-INF/mytaglib.tld"] />
<#assign my=JspTaglibs["/mynamespace"] />

person 3urdoch    schedule 12.08.2011    source источник


Ответы (1)


FreeMarker автоматически сканирует все файлы JAR в вашем каталоге WEB-INF/lib. Если он находит файлы .tld в каталоге JAR META-INF, например ваш META-INF/mytaglib.tld, он заглянет внутрь него, чтобы найти тег <uri>. Если он найдет его, он сделает библиотеку тегов доступной через этот URI, например, библиотеку тегов, определенную как

<taglib>
  <shortname>my custom taglib</shortname>
  <uri>http://example.org/mytaglib</uri>
  <!-- ... -->
</taglib>

можно использовать в FreeMarker через

<#assign my=JspTaglibs["http://example.org/mytaglib"] />

По крайней мере, это сработало для меня...

person Chaquotay    schedule 13.08.2011
comment
Спасибо, это сработало. Я уже пытался использовать URI, однако он не включал имя хоста, и кажется, что freemarker распознает только полные URL-адреса http как пространства имен. Поэтому я изменил пространство имен на hostname/mynamespace, и оно отлично работает. - person 3urdoch; 14.08.2011