tags:

views:

413

answers:

1

I'm attempting to use JSPX (pure XML syntax for JSP) and running into what seems like it should work, but doesn't. I'm importing taglibs using namespace declarations in the jsp:root element, then using these later on for elements as well as EL functions:

<jsp:root version="2.0"
    xmlns:jsp="http://java.sun.com/JSP/
    xmlns:c="urn:jsptld:/WEB-INF/tld/c.tld"
    xmlns:fn="urn:jsptld:/WEB-INF/tld/fn.tld">
    ...
    <c:if test="${fn:length(list) &gt; 0">
        ...
    </c:if>
    ...
</jsp:root>

I get an exception saying "The attribute prefix fn does not correspond to any imported tag library". Other pages work fine, but this page differs in that it uses a few EL functions contained in a tag library.

Is there a different kind of import I need that will bring these taglib prefixes into a scope that's visible for EL function calls?

+2  A: 

Why don't you use the full TLD URI? You can find here an overview of the valid JSTL TLD URI's (click at any JSTL taglib of your interest to get the valid declaration examples).

To be sure: you have placed the JSTL JAR file(s) (jstl.jar and/or standard.jar, depending on JSTL version, until with 1.1 it's both and in 1.2 it's only jstl.jar) in the classpath and you did not extract them nor cluttered the classpath and/or web.xml with loose files and declarations as some poor online tutorials say?

BalusC
You're spot-on. Our firm had hired some consultants to build a portal website a couple years ago. After reading your comment, I went and looked more closely. Turns out they had yanked the JSTL TLD files out into a folder under WEB-INF. Removing these and changing the namespace imports to use the full URLs fixed the issue.
Alan Krueger
You're welcome.
BalusC