Hi
I have a componenet that has some dynamic content. And I don't want to dispatcher to cache this part. So inspired by http://www.slideshare.net/netceteragroup/dynamic-components-using-singlepageapplication-concepts-in-... (Page 4), This is what I did, under apps/myapp/dynamicComponent, I have a two files, one is dynamicComponent.jsp and the other is dynamicComponent.dynamic.jsp, So in dynamicComponent.dynamic.jsp page, I have some JSP code to render the dynamic content. and in dynamicComponenet.jsp, I am using SSI to include this like this
<div color="red">render this</div> <!--# include virtual="<%=currentNode.getPath().replace("jcr:content","_jcr_content")%>.dynamic.html" />
So I decide to directly hit the page component link like this http://localhost:4505/content/myapp/mypage/_jcr_content/rightPar/dynamicComponent.dynamic.html page, and it didn't show me this red "render this" text, so apparently, it didn't render me anything.
Can someone tell me what is wrong?
Solved! Go to Solution.
Try hitting your component without the 'dynamic' selector (for example, http://localhost:4505/content/myapp/mypage/_jcr_content/rightPar/dynamicComponent.html). The contents of dynamicComponent.jsp (including 'render this') will not be included in the response when the selector matches another script.
I would also suggest renaming dynamicComponent.dynamic.jsp to simply dynamic.jsp.
Views
Replies
Total Likes
Try hitting your component without the 'dynamic' selector (for example, http://localhost:4505/content/myapp/mypage/_jcr_content/rightPar/dynamicComponent.html). The contents of dynamicComponent.jsp (including 'render this') will not be included in the response when the selector matches another script.
I would also suggest renaming dynamicComponent.dynamic.jsp to simply dynamic.jsp.
Views
Replies
Total Likes
Hi,
You can use the "recent requests" view in the OSGI webconsole to get insight what a request was actually doing. I don't see any obvious problem in your usecase, so you might find there some more information.
kind regards,
Jörg
Bruce Lefebvre wrote...
Try hitting your component without the 'dynamic' selector (for example, http://localhost:4505/content/myapp/mypage/_jcr_content/rightPar/dynamicComponent.html). The contents of dynamicComponent.jsp (including 'render this') will not be included in the response when the selector matches another script.
I would also suggest renaming dynamicComponent.dynamic.jsp to simply dynamic.jsp.
I have changed to dynamic.jsp, yes, it starts to show some right thing. At least this "render this" is showing up. So I guess I am on the right track. But now, how do I do a SSI include?
Till now if I directly hit the http://localhost:4505/content/myapp/mypage/_jcr_content/rightPar/dynamicComponent.html, I can see the component is showing correctly. But When I put this code to dynamicComponent.jsp it just not show the include. Any idea why?
<div color="red">render this</div> <!--# include virtual="<%=currentNode.getPath().replace("jcr:content","_jcr_content")%>.dynamic.html" -->
Views
Replies
Total Likes
SSI includes are a feature of the web server, so you will need a dispatcher in front of your instance in order to use them (see answer at [0]).
[0] also contains a suggestion to query WCMMode from within your JSP and use a <cq:include to make your content available in author mode, with no dispatcher present.
Hi,
Thanks for the link. It is really helpful! I have managed to setup the SSI. But One thing confusing me is how do I differ the WCMMode in publish instance from dispatcher? This is what I wrote in the code, author and dispatcher are working fine, But the publish instance does not show. Any idea?
<% String path = currentNode.getPath().replace("jcr:content", "_jcr_content") +".dynamic.html"; %> <% boolean authormode = ((WCMMode.fromRequest(request) == WCMMode.EDIT) || (WCMMode.fromRequest(request) == WCMMode.DESIGN) ||(WCMMode.fromRequest(request) == WCMMode.PREVIEW) ); if (authormode) { %> <sling:include path="<%=path%>" /> <% } else { %> <!--#include virtual="<%=currentNode.getPath().replace("jcr:content", "_jcr_content")%>.dynamic.html" /> <% }
Views
Replies
Total Likes
Hi Rui,
Did you ever bump upon this one:
https://github.com/Cognifide/Sling-Dynamic-Include
This library is doing exactly the thing that you are trying to implement, so maybe instead of reinventing the wheel... ;)
Views
Replies
Total Likes
Here is also a header that you can set for the request.
https://helpx.adobe.com/experience-manager/kb/DispatcherNoCache.html
Views
Replies
Total Likes
Views
Likes
Replies