You could use a selector. So supposing your component is called mycomponent/
On Tue, Apr 17, 2012 at 10:05 PM, Jakob Külzer <[email protected]>wrote: > Hello everybody, > > I'm just starting to get my head wrapped around Sling and Day CQ 5 and > I'm running against an issue that I don't really understand properly. > I'm still quite new to Sling, so if you see something where I've got > an incorrect understanding feel free to jump in and correct me. > Thanks! > > What I am trying to do is to replace certain request with output from > a different JSP. For example, a page contains an embedded component > which, as far as I understand, is referenced via a Sling resourceType. > When Sling renders this page, the JSP will be included; however, based > on certain conditions I'd like to render a different JSP. My naive > approach is to register a filter in the include chain, create a > RequestDispatcher for the new JSP and call the include() method. > > My first question is, am I using the appropriate approach for this? > Should I look at another mechanism in Sling to do something like this? > > Second, assuming a filter is the correct approach, why does it not > render my JSP? > > Here're the relevant lines of code: > > ---->8-------------------------------------------------------------- > @org.apache.felix.scr.annotations.Component(immediate = true, metatype = > false) > @Service(Filter.class) > @Properties({ @Property(name = "sling.filter.scope", value = { > "include", "forward" }) }) > public class ComponentFilter implements Filter { > > public void doFilter(ServletRequest request, ServletResponse > response, FilterChain chain) throws IOException, ServletException { > final SlingHttpServletRequest slingRequest = (SlingHttpServletRequest) > request; > final Resource resource = ...; // Get resource for the JSP. > if (localResource != null) { > final RequestDispatcher requestDispatcher = > slingRequest.getRequestDispatcher(resource); > requestDispatcher.include(request, response); > } else { > chain.doFilter(request, response); > } > } > > } > ---->8-------------------------------------------------------------- > > The resource is properly resolved: > > *DEBUG* script: JcrNodeResource, type=nt:file, superType=null, > path=/apps/myapp/components/demo/replacment.jsp > > However, I get this error: > > 17.04.2012 16:13:53.136 *ERROR* [127.0.0.1 [1334693633099] GET > /content/geometrixx/en/test.html HTTP/1.1] > org.apache.sling.servlets.get.impl.DefaultGetServlet No renderer for > extension html, cannot render resource JcrNodeResource, type=nt:file, > superType=null, path=/apps/myapp/components/demo/replacment.jsp > > I'm not sure what to make of this. Any ideas? > > Any help is appreciated! Thank you. > > > -- > Cheers, > Jakob >
