Frequently asked question

Can the uri attribute for a JSP's taglib point to a remote Tag Library Description (TLD) file?

Last Published: April 25, 2020

Answer

In brief, the answer is 'no'. The uri attribute can:

1) point to a location on disk (relative to the web application root directory) or
2) map to a location on disk via the web application's web.xml file.

In the web.xml file, the taglib element contains two subelements: taglib-uri and taglib-location. These define a unique string used by the JSP's taglib uri parameter (taglib-uri) and the path to the TLD on disk, relative to the web application (taglib-location). Here is a portion of the J2EE JSP deployment descriptor defining these elements:

Code:
<xsd:complexType name="taglibType">
- <xsd:annotation>
<xsd:documentation>The taglibType defines the syntax for declaring in the deployment descriptor
that a tag library is available to the application. This can be done to override implicit map
entries from TLD files and from the container.</xsd:documentation>
</xsd:annotation>
- <xsd:sequence>
- <xsd:element name="taglib-uri" type="j2ee:string">
- <xsd:annotation>
<xsd:documentation>A taglib-uri element describes a URI identifying a tag library used in the web
application. The body of the taglib-uri element may be either an absolute URI specification, or a
relative URI. There should be no entries in web.xml with the same taglib-uri
value.</xsd:documentation>
</xsd:annotation>
</xsd:element>
- <xsd:element name="taglib-location" type="j2ee:pathType">
- <xsd:annotation>
<xsd:documentation>the taglib-location element contains the location (as a resource relative to
the root of the web application) where to find the Tag Library Description file for the tag
library.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID" />
</xsd:complexType>

All xsds for J2EE defined deployment descriptors can be found at the following url:
J2EE Specifications

Here is an example:

In a JSP file, the following taglib is specified:

Code:
<%@ taglib uri="http://www.esri.com/argcis/webcontrols" prefix="ags" %>


The uri appears to reference a remote resource, however the web application's web.xml file shows how the uri is mapped to a local file:

Code:
<taglib>
<taglib-uri>http://www.esri.com/argcis/webcontrols</taglib-uri>
<taglib-location>/WEB-INF/arcgis_webcontrols.tld</taglib-location>
</taglib>


In this case, the uri is mapped to the arcgis_webcontrols.tld in the web application's WEB-INF directory.

It is also possible reference a TLD without configuring the deployment descriptor (web.xml). The web container (for example, Tomcat) will read TLD files present in a JAR file's META-INF directory (in the web applications WEB-INF\lib directory). The TLD will contain a reference to the uri used to map the taglib to the TLD:

Code:
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>a</short-name>
<uri>http://www.esri.com/arcgis/webcontrols</uri>
...
</taglib>


Article ID:000007719

Software:
  • ArcGIS Server

Receive notifications and find solutions for new or common issues

Get summarized answers and video solutions from our new AI chatbot.

Download the Esri Support App

Discover more on this topic

Get help from ArcGIS experts

Contact technical support

Download the Esri Support App

Go to download options