如何使用 HTL/Sightly 访问后缀?
How to access suffixes using HTL/Sightly?
TLDR:创建一个名为 "mypage.html" 的新 AEM 页面。补给后缀在URL。将此后缀传递给 Sling servlet。后缀充当 URL 参数。
需要样本 URL:http://localhost:4502/mypage.html/john/smith
所以我创建了一个可以读取后缀的 servlet(使用本指南:http://www.aemcq5tutorials.com/tutorials/sling-servlet-in-aem/)。
@SuppressWarnings("serial")
@SlingServlet(paths="geometrixx/components/hompepage", selectors="name", extensions="html",methods="GET", metatype=true)
public class StaffProfileServlet extends SlingAllMethodsServlet {
private static final Logger log = LoggerFactory.getLogger(CourseBookmarkServlet.class);
@Override
protected void doGet(final SlingHttpServletRequest request,
final SlingHttpServletResponse response) throws ServletException, IOException {
RequestPathInfo rpi = request.getRequestPathInfo();
String[] suffixes = rpi.getSuffix().split("/");
如果我通过 http://localhost:4502/content/geometrixx/en.name.html/first/last
访问它,它工作正常
我接下来要做的是创建一个名为 "mypage.html" 的新页面,并提供 first 和 last 作为后缀。
我的页面将在格式正确的页面中显示与此人相关的信息。 使用上面的代码,我得到的只是 JSON 响应。
一些 assumptions/changes 我认为是实现我的目标所必需的:
- 我将使用路径并使用请求参数(即在 servlet 代码
上使用 request.getParameter("myparameter")
- 我将使用 AJAX 访问 servlet
如果我的假设是正确的,我如何从 HTL/Sightly 访问后缀?我知道我可以通过 ${request.requestURI} 甚至 Javascript 获取 URI。然后使用这个值,我可以在我的 AJAX 调用中使用它。
但这是 AEM/Sling 的做法吗?或者也许有更好的方法来做我想做的事?
非常感谢!
您可以使用 HTL 的 RequestPathInfo 接口访问后缀。 ${request.requestPathInfo.suffix}
可通过 HTL 访问的全局对象 -> here。
可通过请求对象访问的方法 -> here.
TLDR:创建一个名为 "mypage.html" 的新 AEM 页面。补给后缀在URL。将此后缀传递给 Sling servlet。后缀充当 URL 参数。
需要样本 URL:http://localhost:4502/mypage.html/john/smith
所以我创建了一个可以读取后缀的 servlet(使用本指南:http://www.aemcq5tutorials.com/tutorials/sling-servlet-in-aem/)。
@SuppressWarnings("serial")
@SlingServlet(paths="geometrixx/components/hompepage", selectors="name", extensions="html",methods="GET", metatype=true)
public class StaffProfileServlet extends SlingAllMethodsServlet {
private static final Logger log = LoggerFactory.getLogger(CourseBookmarkServlet.class);
@Override
protected void doGet(final SlingHttpServletRequest request,
final SlingHttpServletResponse response) throws ServletException, IOException {
RequestPathInfo rpi = request.getRequestPathInfo();
String[] suffixes = rpi.getSuffix().split("/");
如果我通过 http://localhost:4502/content/geometrixx/en.name.html/first/last
访问它,它工作正常我接下来要做的是创建一个名为 "mypage.html" 的新页面,并提供 first 和 last 作为后缀。
我的页面将在格式正确的页面中显示与此人相关的信息。 使用上面的代码,我得到的只是 JSON 响应。
一些 assumptions/changes 我认为是实现我的目标所必需的:
- 我将使用路径并使用请求参数(即在 servlet 代码 上使用 request.getParameter("myparameter")
- 我将使用 AJAX 访问 servlet
如果我的假设是正确的,我如何从 HTL/Sightly 访问后缀?我知道我可以通过 ${request.requestURI} 甚至 Javascript 获取 URI。然后使用这个值,我可以在我的 AJAX 调用中使用它。
但这是 AEM/Sling 的做法吗?或者也许有更好的方法来做我想做的事?
非常感谢!
您可以使用 HTL 的 RequestPathInfo 接口访问后缀。 ${request.requestPathInfo.suffix}
可通过 HTL 访问的全局对象 -> here。
可通过请求对象访问的方法 -> here.