Try this [1], I hope it will help. I don't know if it's understandable and 100% accurate, but it's the outcome of hours spent investigating the servlet resolution process.
If you find some errors in there, feel free to add a comment to it. [1]: https://gist.github.com/francescomari/17d61034a4776ff34170 2013/8/21 Daniel Platon <[email protected]>: > Hi Felix, > > Thank you for your reply. > > I realized myself (after some Sling debugging) that > ServletResolver.resolveServlet(ResovlerResolver, String) is of no help to > me. > I'll get back to the drawing board now ;) > > ___________________________ > Daniel Platon > > > On Wed, Aug 21, 2013 at 3:54 PM, Felix Meschberger-3 [via Apache Sling] < > [email protected]> wrote: > >> Hi Daniel >> >> Am 20.08.2013 um 16:30 schrieb Daniel Platon: >> >> > Hi everyone, >> > >> > Q: How can I determine the script used to render a certain resource >> type? >> > >> > Details: I'm trying to do this in a JSP page (for my sling-explorer >> > project) so that the user can see what script renders a certain type of >> > content (a resourceType that is). This is what I tried so far: >> > >> > 1. Obtain a reference to a ServletResolver service using >> > ServletResolver servletResolver = >> sling.getService(ServletResolver.class); >> > >> > 2. Ask the service to "resolve" the resource type: >> > Servlet servlet = >> > servletResolver.resolveServlet(resourceResolver,"myapp/mytype") >> >> The ServletResource.resolveServlet(ResovlerResolver, String) method takes >> a (relative) script path as its second argument not a resource type. And >> since there is no script with this relative path in the ResourceResovler's >> search path, you won't get it. >> >> The method finding a script would be >> ServletResource.resolveServlet(SlingHttpServletRequest) which requires you >> to have a request object, which exposes the Resource whose resource type is >> used (and whose super resource type is also used). The request object also >> provides the method and selectors helping to decide on the script. >> >> Regards >> Felix >> >> > >> > but this returns null. >> > >> > Everything is in place: the script is there, the resource renders >> correctly >> > (the script is in /apps/myapp/mytype/mytype.jsp), it's just that the >> > resolver returns null when asked to resolve a script. >> > >> > Is there another way (perhaps... the right way :) ) to do this? >> > >> > Thank you and have a good day. >> > ___________________________ >> > Daniel Platon >> >> >> >> ------------------------------ >> If you reply to this email, your message will be added to the discussion >> below: >> >> http://apache-sling.73963.n3.nabble.com/Determine-the-rendering-script-by-resource-type-tp4026386p4026397.html >> To start a new topic under Sling - Users, email >> [email protected] >> To unsubscribe from Apache Sling, click >> here<http://apache-sling.73963.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=73963&code=ZHBsYXRvbkBnbWFpbC5jb218NzM5NjN8NTEwNzc3ODQ5> >> . >> NAML<http://apache-sling.73963.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> >> > > > > > -- > View this message in context: > http://apache-sling.73963.n3.nabble.com/Determine-the-rendering-script-by-resource-type-tp4026386p4026398.html > Sent from the Sling - Users mailing list archive at Nabble.com.
