user1692342
user1692342

Reputation: 5237

writing custom jstl function - file not found error

I want to write my own custom JSTL Library:

I created a class with a static function

public class Utils {
    public static  String getAll(String test) {
        return "";
    }
}

In my web.xml file I added under jsp-config:

<taglib>
 <taglib-uri>
     http://schema.test.com/xmlns
 </taglib-uri>
 <taglib-location>
    /WEB-INF/tags/utils.tld
 </taglib-location>
</taglib>

I created a folder in WEB-INF/tags In that I created a utils.tld file:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.0">

    <tlib-version>1.0</tlib-version>
    <short-name>url-construction</short-name>
    <uri>http://schema.test.com/xmlns</uri>

    <function>
        <name>UtilFunctions</name>
        <function-class>com.test.website.jstl.utils</function-class>
        <function-signature>java.lang.String getAll(java.lang.String)</function-signature>
    </function>

</taglib>

In my JSP:

<%@ taglib uri="/WEB-INF/tags/utils" prefix="cg" %>

<c:set var="displayName" value="${cg:getAll("xyz")}"/>

I get an error:org.apache.jasper.JasperException: File "/WEB-INF/tags/utils" not found

Upvotes: 0

Views: 408

Answers (1)

Sachith Dickwella
Sachith Dickwella

Reputation: 1490

Following issue in the tld file might be the reason.

<function-class>com.test.website.jstl.utils</function-class>

But your class is

public class Utils {
    public static  String getAll(String test) {
        return "";
    }
}

Java is case sensitive language. You should pass your class's full qualified name as it is.

Upvotes: 1

Related Questions