2011-08-12 17 views
6

Quiero utilizar algunas etiquetas personalizadas en una plantilla de marca libre, lo cual es bastante fácil ya que puedo incluir el JspSupportServlet en mi archivo web.xml e incluir la siguiente línea en la plantilla.Etiquetas JSP en una plantilla de Freemarker

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

Sin embargo ¿Cómo voy a hacer esto si el .tld se incluye en un archivo JAR en el directorio META-INF? Intenté ambos sin suerte.

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

Respuesta

3

FreeMarker escanea automáticamente todos los archivos JAR en su directorio WEB-INF/lib. Si encuentra archivos .tld dentro del directorio META-INF de un JAR, como su META-INF/mytaglib.tld, se asomará dentro de él para encontrar la etiqueta <uri>. Si encuentra uno, que hará que el taglib disponible a través de este URI, por ejemplo, una taglib definido como

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

se puede utilizar en FreeMarker través

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

Al menos esto funcionó para mí ...

+1

Gracias, eso funcionó. Ya había intentado usar el URI, sin embargo, no incluía el nombre de host http: // y parece que freemarker solo reconoce las URL de http completas como espacios de nombres. Así que he cambiado el espacio de nombres para que sea http: // nombre de host/mynamespace y funciona perfectamente. – 3urdoch

+0

¿Funciona con el modo de corchete cuadrado? –

Cuestiones relacionadas