如何使用HTL / Sightly访问后缀?

时间:2018-05-09 01:10:11

标签: aem sling sightly htl

TLDR:创建一个名为" mypage.html"的新AEM页面。在URL中提供后缀。将此后缀传递给Sling servlet。后缀充当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"的新页面。并提供第一个和最后一个作为后缀。

mypage将在格式正确的页面中显示与此人相关的信息。 使用上面的代码,我得到的只是JSON响应。

我认为实现目标需要一些假设/变化:

  1. 我将使用路径并使用请求参数(即使用request.getParameter(" myparameter")对servlet代码
  2. 我将使用AJAX访问servlet
  3. 如果我的假设是正确的,我如何从HTL / Sightly访问后缀?我知道我可以通过$ {request.requestURI}甚至是Javascript来获取URI。然后使用这个值,我可以在我的AJAX调用中使用它。

    但这是AEM / Sling的做法吗?或者也许有更好的方法来做我想要的事情?

    非常感谢!

1 个答案:

答案 0 :(得分:4)

您可以使用HTL的RequestPathInfo界面来访问后缀' s。 $ {request.requestPathInfo.suffix}

可通过HTL访问的全局对象 - > here

通过请求对象访问的方法 - > here