在adobe AEM(又名cq)中,对于给定的url,是否可以看到调用了什么jsp?
我们有一些示例代码,不是由我们编写的,如果存在特定选择器,则匹配2组'base'jsp - 移动设备为'm'。 在基本jsp中,如果移动或桌面设备正在请求,则将变量设置为标记。
从那时起,不再使用其他选择器 - 只需检查变量,特别是包含移动特定的jsp。
单独使用选择器调用特定jsp的不同方法。
通过跟踪脚本分辨率,它有助于可视化和首次亮相,但这是基于吊索的代码的常见模式吗?
答案 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单元测试中的工作原理,该测试可探索更广泛的用例。