追踪吊带jsp分辨率&选择器与变量的使用

时间:2013-09-14 08:03:24

标签: cq5 sling aem

在adobe AEM(又名cq)中,对于给定的url,是否可以看到调用了什么jsp?

我们有一些示例代码,不是由我们编写的,如果存在特定选择器,则匹配2组'base'jsp - 移动设备为'm'。 在基本jsp中,如果移动或桌面设备正在请求,则将变量设置为标记。

从那时起,不再使用其他选择器 - 只需检查变量,特别是包含移动特定的jsp。

单独使用选择器调用特定jsp的不同方法。

通过跟踪脚本分辨率,它有助于可视化和首次亮相,但这是基于吊索的代码的常见模式吗?

3 个答案:

答案 0 :(得分:3)

您可以在Web控制台中查看有关最新请求的详细信息,即“最近请求”选项卡(本地作者实例的http://localhost:4502/system/console/requests)。

输出类似于下面的输出,它应该为您提供足够的信息

  0 (2013-09-14 21:36:20) TIMER_START{Request Processing}
  0 (2013-09-14 21:36:20) COMMENT timer_end format is {<elapsed msec>,<timer name>} <optional message>
  0 (2013-09-14 21:36:20) LOG Method=GET, PathInfo=/.edit.html
  0 (2013-09-14 21:36:20) TIMER_START{ResourceResolution}
  1 (2013-09-14 21:36:20) TIMER_END{1,ResourceResolution} URI=/.edit.html resolves to Resource=JcrNodeResource, type=sling:redirect, superType=null, path=/
  1 (2013-09-14 21:36:20) LOG Resource Path Info: SlingRequestPathInfo: path='/', selectorString='edit', extension='html', suffix='null'
  1 (2013-09-14 21:36:20) TIMER_START{ServletResolution}
  1 (2013-09-14 21:36:20) TIMER_START{resolveServlet(JcrNodeResource, type=sling:redirect, superType=null, path=/)}
  1 (2013-09-14 21:36:20) TIMER_END{0,resolveServlet(JcrNodeResource, type=sling:redirect, superType=null, path=/)} Using servlet /libs/sling/servlet/default/edit.jsp
  1 (2013-09-14 21:36:20) TIMER_END{0,ServletResolution} URI=/.edit.html handled by Servlet=/libs/sling/servlet/default/edit.jsp
  1 (2013-09-14 21:36:20) LOG Applying Requestfilters
  1 (2013-09-14 21:36:20) LOG Calling filter: org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter
  1 (2013-09-14 21:36:20) LOG Calling filter: org.apache.sling.explorer.post.POSTServletFilter
  1 (2013-09-14 21:36:20) TIMER_START{/libs/sling/servlet/default/edit.jsp#0}
  3 (2013-09-14 21:36:20) LOG Including resource JcrNodeResource, type=sling:redirect, superType=null, path=/ (SlingRequestPathInfo: path='/', selectorString='head', extension='html', suffix='null')
  3 (2013-09-14 21:36:20) TIMER_START{resolveServlet(JcrNodeResource, type=sling:redirect, superType=null, path=/)}
  3 (2013-09-14 21:36:20) TIMER_END{0,resolveServlet(JcrNodeResource, type=sling:redirect, superType=null, path=/)} Using servlet /libs/sling/servlet/default/head.jsp

答案 1 :(得分:0)

您还可以找出使用ServletResolver服务处理请求的脚本或servlet:

    Servlet servlet = servletResolver.resolveServlet(slingRequest);
    RequestUtil.getServletName(servlet);

答案 2 :(得分:0)

正如@robert_munteanu所示,系统控制台上的“请求”选项卡是跟踪您的请求处理的最佳位置。

这是Sling应用程序中常见的习惯用法。不同的JSP用于GET / POST请求,包含选择器的请求或具有不同扩展名的请求。

查看Sling Cheatsheet以了解其在高级别或Sling ScriptSelectionTest单元测试中的工作原理,该测试可探索更广泛的用例。