In a template file, I have a chunk code of like this:
<jsp:include page="/apps/acme/components/menu/menu-items.jsp"> <jsp:param name="menuItem" value="${rootItem}" /> </jsp:include>
menu-items.jsp recursively includes itself like:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <li> ${menuItem.title} <c:if test="${fn:length(menuItem.children) > 0}"> <ul> <c:forEach var="child" items="${menuItem.children}"> <jsp:include page="/apps/acme/components/menu/menu-items.jsp"> <jsp:param name="menuItem" value="${child}"/> </jsp:include> </c:forEach> </ul> </c:if> </li>
However CQ encounters an error rendering this:
Caused by: org.apache.sling.api.resource.ResourceNotFoundException: No resource found
I am using jsp:include rather than cq:include because I want to pass a parameter to the script, and as the script is invoked recursively each time with a different value for its parameter I prefer not to use request attributes and manually manage the parameter stack.
However this doesn't seem to work. Is it allowed to use jsp:include in CQ5? Am I missing something here?
Thanks.
Solved! Go to Solution.
Views
Replies
Total Likes
Yes, you can use jsp:include in CQ5/AEM, but it doesn't do what you think it does. jsp:include, per specification, goes all the way back to the RequestDispatcher. So you can include smoething like /content/geometrixx/en.html (and even add parameters), but you can't directly include a JSP.
Views
Replies
Total Likes
Yes, you can use jsp:include in CQ5/AEM, but it doesn't do what you think it does. jsp:include, per specification, goes all the way back to the RequestDispatcher. So you can include smoething like /content/geometrixx/en.html (and even add parameters), but you can't directly include a JSP.
Views
Replies
Total Likes
Thanks for the reply Justin.
So other than the cq:include/request attributes combo is there any other way to include a JSP page and pass parameters to it?
Views
Replies
Total Likes
LinearGradient wrote...
So other than the cq:include/request attributes combo is there any other way to include a JSP page and pass parameters to it?
See, that's the thing. In CQ/AEM, JSPs aren't "pages" (yes I know that the P in JSP is "Pages"), they are really scripts which need a resource to execute against.
What you can do, although I don't know if this meets your needs, is to create a resource (could be a synthetic resource provided by a ResourceProvider or a real JCR Node) which has the appropriate sling:resourceType and then use jsp:include.
However, I think your problem (at least as I understand it), could be handled in a more idiomatic way simply by using resource inclusion.
Views
Replies
Total Likes
Views
Like
Replies
Views
Likes
Replies
Views
Likes
Replies