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
>

Reply via email to