2011-08-12 18 views
6

Chcę użyć niestandardowych znaczników w szablonie freemarker, który jest dość łatwy, ponieważ mogę dołączyć JSPSupportService w moim pliku web.xml i dołączyć do niego następującą linię.Znaczniki JSP w szablonie Freemarker

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

Jednak jak to zrobić, jeśli plik .tld jest dołączony do pliku JAR w katalogu META-INF? Wypróbowałem oba bez powodzenia.

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

Odpowiedz

3

FreeMarker automatycznie skanuje wszystkie pliki JAR w katalogu WEB-INF/lib. Jeśli znajdzie pliki .tld w katalogu META-INF JAR, na przykład META-INF/mytaglib.tld, zajrzy do niego, aby znaleźć znacznik <uri>. Jeżeli stwierdzi jedną, uczyni to TagLib dostępnych za pośrednictwem tej URI, np TagLib zdefiniowany jak

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

może być stosowany w FreeMarker poprzez

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

Przynajmniej ten pracował dla mnie ...

+1

Dzięki, to zadziałało. Próbowałem już używać URI, ale nie zawierało ono http: // nazwy hosta i wydaje się, że freemarker rozpoznaje tylko pełne adresy URL jako przestrzenie nazw. Zmieniłem więc przestrzeń nazw na http: // nazwa_hosta/przestrzeń nazw i działa ona idealnie. – 3urdoch

+0

Czy działa w trybie nawiasów kwadratowych? –