Hi All,
I am creating a JSP custom tag using tag file but i am getting following error
org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: File "/META-INF/tags/HelloTag.tag" not found
tag file is located at /META-INF/tags/HelloTag.tag
Following are content of tag definition file located at //META-INF/taglibs.tld
<taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_1.xsd" version="2.1"> <tlib-version>1.0</tlib-version> <short-name>Angular</short-name> <uri>http://abc.org/Hello/Taglib</uri> <tag-file> <name>Hello</name> <path>/META-INF/tags/HelloTag.tag</path> </tag-file></taglib>
Also following is the configuration of bundle plugin
<plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>org.abc.angularjs-tags-aem</Bundle-SymbolicName> <Sling-Model-Packages>org.abc.web.jsp.angularjs.tags</Sling-Model-Packages> <Bundle-Resource>/META-INF/tags</Bundle-Resource> <Sling-Bundle-Resource>/META-INF/tags</Sling-Bundle-Resource> </instructions> </configuration></plugin>
I read following blogs for creating this sample.
http://labs.6dglobal.com/blog/2013-07-02/tagfile-vs-tag-sling-or-cq5-application/
http://www.cqblueprints.com/tipsandtricks/jsp-custom-tag-lib.html
https://helpx.adobe.com/experience-manager/using/customtags.html
Also full maven artifact is attached with this form.
Views
Replies
Total Likes
Can you share your JSP code?
Views
Replies
Total Likes
I am using AEM 6.1 version.
https://helpx.adobe.com/experience-manager/using/customtags.html talks about custom tag using Java class but in my case I am using tag file (*.tag file).
Following is the jsp file
<%@page session="false" %><%@include file="/libs/foundation/global.jsp" %><%@ taglib prefix="cq" uri="http://www.day.com/taglibs/cq/1.0" %><%@ taglib prefix="hello" uri="http://abc.org/Hello/Taglib" %><body data-ng-app="angularjsSample" data-ng-controller="BaseController"> <hello:Hello target="World"/></body>
Also following is the tag file.
<%@ attribute name="target" required="true" rtexprvalue="false" type="java.lang.String" %><div> Hello <%=target%> </div>
Views
Replies
Total Likes
Okay, so it seems you are creating .tag files not .tld.
You need to use /WEB-INF/tags as shown below
JSP, sample.jsp
<%@ page contentType="text/html" %> <%@ taglib prefix="my" tagdir="/WEB-INF/tags/myCustomTags" %> <html> <body> NAME : <my:name /> </body> </html>
TAG, name.tag
<%@ tag body-content="empty" %> <% out.println("AEM Developer"); %>
Please see these:
https://nikojava.wordpress.com/2009/01/12/jsp-custom-tags-part1-create-tag-file/
http://archive.oreilly.com/pub/a/onjava/excerpt/jserverpages3_ch11/index.html
Views
Replies
Total Likes
Thanks Praveen for the reply.
There are two thing which need to be taken care in my case.
1. Tags will be located in separate package from content package. This separate package will be generic and can change at anytime. Thus do not want to hard code any paths.
2. My Tag library has both tag files and few java implementation of tags i.e. my tld xml will have both <tag> and <tag-file> elements. With this I am not sure if I can have single uri for tags located in /WEB_INF/tags and Java based tags.
Views
Replies
Total Likes
AFAIK and implemented these in projects.
1. .tld will stay in OSGI bundle inside /META-INF and will be used with the help of uri.
2. .tags were places parallel to components in /apps and worked well with /WEB-INF path. and I don't thinks so it will work if you place .tags inside /META-INF as path for them has to start with /WEB-INF.
Views
Replies
Total Likes
Do you mean i have to place .tags in content maven artifact and not in OSGI bundle?
Views
Replies
Total Likes
yes,
Create a simple folder under /apps/project/components/customtagfolder and place all your .tag file inside this customtagfolder
Views
Replies
Total Likes
Hi Praveen,
We are upgrading from 5.6.1 to 6.2.
We have placed .tld file inside /META-INF and .tag file is inside /META-INF/tags and it is working fine without giving any errors in 5.6.1.
We have installed all the bundles to 6.2 environment, now the error is"File /META-INF/tags/HelloTag.tag not found".
From AEM 5.6.1 to 6.2 any configuration has been changed ?
From AEM 6.1 onwards is it compulsory to place the *.tag files inside apps folder /apps/project/components/customtagfolder?
Please help me on my questions
Views
Replies
Total Likes
The same problem @sruthia75953514 described. Works fine in 5.6.1. On 6.2 a page is not loaded and in logs:
org.apache.sling.scripting.jsp.jasper.JasperException: File "/META-INF/tags/helloWorld.tagx" not found
Any solutions?
Views
Replies
Total Likes
I've removed obsolete bundles
com.squeakysand.sling - squeakysand-sling-taglibcom.squeakysand.sling.squeakysand-sling-taglib com.squeakysand.jsp - squeakysand-jsp-taglibcom.squeakysand.jsp.squeakysand-jsp-taglib com.squeakysand.jcr - squeakysand-jcr-taglibcom.squeakysand.jcr.squeakysand-jcr-taglib com.cqblueprints.taglib - cqblueprints-taglibcom.cqblueprints.taglib.cqblueprints-taglib
and this has fixed my problem
Views
Replies
Total Likes
Removing of the com.cqblueprints.taglib bundle has fixed the issue
We are upgrading from 6.1 to 6.3, I'm getting the same issue.
Any thoughts to fix this issue ?
Thanks
Arun
I am getting same issue when migrating from AEM 6.1 to AEM 6.3. We did an inplace upgrade. How do I find obsolete bundles in my instance. I dont have above bundles mentioned by Stanleyor.
Any thoughts what I need to check?
Thanks in advance!
Same problem I am facing with AEM 6.3 , any clue?
I have used tld generator maven plugin in my project. it successfully generating the tld file in jar file but not able to access the .tag file.
The issue was fixed in https://issues.apache.org/jira/browse/SLING-7044
Summary of the issue :
If a taglib in a bundle references a tag implemented as a script (located in /META-INF/tags) this script is not found as it is not searched within the bundle containing the tld - it's rather used as a resource on the classpath.
Please contact Adobe to get the patch fix for this issue.
Thanks
Arun
The issue was fixed in https://issues.apache.org/jira/browse/SLING-7044
This fix will be included in AEM 6.3.1.1, you can contact Adobe to get the pacth for this issue.
Thanks
Arun