Skip to main content
Level 4
Feb 16, 2016 5:43 PM UTC
Solved

Error using jstl inside component jsp

I'm using this simple tag

<c:set var="content" value="${sling:getResource(resourceResolver,/content/dam/imf/public/sampleicons)}" />

Getting an error

The function getResource cannot be located with the specified prefix

 

Complete jsp:

<%--

  Directory Browser component.

  Lists all resources in the directory

--%><%
%><%@include file="/libs/foundation/global.jsp"%>
<%
%><%@page session="false" %><%
%><%
    // TODO add you code here
%>

<sling:defineObjects/>
<%
String url ="/content/dam/imf/public/sampleicons";
%>
This component lists all in the directory
<c:set var="content" value="${sling:getResource(resourceResolver,url)}" />

 

Reference used:

https://sling.apache.org/documentation/bundles/sling-scripting-jsp-taglib.html

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Kunal_Gaba_
Kunal_Gaba_Accepted solution
New Member
Feb 17, 2016 4:17 PM UTC

You can check the version of taglib in the following bundle jar - org.apache.sling.scripting.jsp.taglib. In AEM 6.1, three versions of taglib are included - 1.0,1.1,1.2 and 1.4 with URI - http://sling.apache.org/taglibs/sling. The TLD files are in META-INF folder in the jar file.  

I have tested the following code in 6.1 and it works fine- 

<%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling" %> <%@taglib prefix="cq" uri="http://www.day.com/taglibs/cq/1.0" %> <cq:defineObjects /> <c:set var="content" value="${sling:getResource(resourceResolver,'/content')}" />

12 replies

edubey
Level 10
Feb 16, 2016 7:46 PM UTC
Translate
edubey
Level 10
Feb 16, 2016 7:47 PM UTC
Translate
Lokesh_Shivalingaiah
Level 10
Feb 16, 2016 8:29 PM UTC

why dont you try with this

<sling:defineObjects> has directly the sling tag libraries to use like below

<sling:getResource var="content" path="<url>" />

Translate
Level 4
Feb 16, 2016 9:21 PM UTC

Getting the same

Interesting, seems like for some reason the taglib isn't loading either that specific implementation. IF you look at my code, I have used slign:definobjects
    

Error during include of component '/apps/imftgsik/components/directorybrowser'

Error Message:

org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: /apps/imftgsik/components/directorybrowser/directorybrowser.jsp(20,0) No tag "getResource" defined in tag library imported with prefix "sling"
Translate
Level 4
Feb 16, 2016 9:24 PM UTC

Global.jsp has this defined

<%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling/1.0" %>

 

We are using 5.6.1

Translate
Level 4
Feb 16, 2016 9:45 PM UTC

Relevant thread

http://stackoverflow.com/questions/23338390/jsp-does-not-compile-in-cq5

Really? delete launchpad folder?

Translate
smacdonald2008
Level 10
Feb 16, 2016 10:53 PM UTC

I have not seen an issue with JSP - Standard Tag Libraries and AEM. For example - see this AEM Community article: 

https://helpx.adobe.com/experience-manager/using/jstl.html

Translate
Kunal_Gaba_
New Member
Feb 17, 2016 12:59 AM UTC

As per the documentation, the getResource method is available since taglib version 1.3. The taglib URI imported in global.jsp is 1.0 and thats why the method is not working for you. 

To solve this problem, do the following- 

  1. Override global.jsp under apps and change the Sling taglib URI to the following- http://sling.apache.org/taglibs/sling (As per documentation - All releases from 1.3 onward are expected to use the URI http://sling.apache.org/taglibs/sling to ensure ease of upgrading to newer versions of the Taglib.)
  2. In your JSP include the global.jsp from /apps location and not from /libs. 
  3. In the getResource method the resource path should be passed as String (The quotations are missing in your syntax). <c:set var="content" value="${sling:getResource(resourceResolver,'/content/dam/imf/public/sampleicons')}" /> 
Translate
Level 4
Feb 17, 2016 1:23 PM UTC

Kunal

That could be it! Quick question, in 6.1, what version is included by default?

Translate
Level 4
Feb 17, 2016 1:49 PM UTC

Kunal,

I think I had tried that, but getting this error:

xception: /apps/imftgsik/components/directorybrowser/directorybrowser.jsp(1,1) The absolute uri: http://sling.apache.org/taglibs/sling/1.3 cannot be resolved in either web.xml or the jar files deployed with this application

Do we need to update one of the core jar files?

Translate