Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在aem中导航/浏览下一页/上一页?_Java_Aem - Fatal编程技术网

Java 如何在aem中导航/浏览下一页/上一页?

Java 如何在aem中导航/浏览下一页/上一页?,java,aem,Java,Aem,我正在AEM 6.3中开发页面。现在我有一个情况,以发展一个网页,其中包含2个链接,浏览到下一个和上一个网页与各自的当前网页。假设我的项目站点下有3个页面/content/project/en 第A页 第B页 第C页 让我们假设,如果我在第B页,那么我的下一页应该是第C页,上一页应该是第A页。这两个链接(下一个/上一个)应该将我重定向到页面A和页面B 可能有很多方法可以做到这一点,但我想的是,我将发出一个ajax get请求,它将以键/值格式返回下一页和上一页。为此,我将使用SlingSer

我正在AEM 6.3中开发页面。现在我有一个情况,以发展一个网页,其中包含2个链接,浏览到下一个和上一个网页与各自的当前网页。假设我的项目站点下有3个页面/content/project/en

  • 第A页
  • 第B页
  • 第C页
让我们假设,如果我在第B页,那么我的下一页应该是第C页,上一页应该是第A页。这两个链接(下一个/上一个)应该将我重定向到页面A页面B

可能有很多方法可以做到这一点,但我想的是,我将发出一个ajax get请求,它将以键/值格式返回下一页和上一页。为此,我将使用SlingServlet对象获取页面路径,并使用查询生成器对该路径进行查询,以获取下一页和上一页。如果页面数量非常有限,这种方法可以很好地工作,但如果页面增加,则会很耗时


我想要一个简单的解决方案来实现这一点。或者aem中有任何插件可以做到这一点?我还尝试在中使用currentPage.nextSibling()来实现这一点,但aem中不存在这种情况。

一种可能的解决方案是创建一个-

  • 可以在页面上调用
  • 将页面路径(使用page.listChildren())作为JSON数组返回
有两种方法可以做到这一点-

  • 在应用程序的基本页面中,添加一个呈现json的jsp
    listChildren.jsp
  • 使用选择器
    listChildren
    和扩展名
    json
    创建一个基于resourceType的servlet。ResourceType是页面的ResourceType
    myapp/page/testpage
  • 在正在呈现的页面的父页面上调用该端点,从而获得所有同级页面路径和当前页面路径的列表。您可以使该端点可捕获,以避免多次发布命中

    获得JSON后,在JS中使用它来获取当前页面路径的索引(使用
    find('path/to/current/page)
    )。一旦有了索引,就可以使用index-1&index+1获取上一页和下一页的路径


    注意-如果您对网站url使用短路径,请确保JSON也返回短路径

    ,作为添加的新要求,下一个/上一个链接上的页面应在创建日期与当前页面的相应位置排序。所以我提出了以下解决方案

    我创建了一个组件名“Next Previous Pagination”,并使用htl语言中的WCMUsePojo模型。该模型负责获取当前页面的下一页和上一页。以下是获取下一页和上一页的jcr查询

    下一页

    select page.* from [cq:Page] AS page WHERE 
    ISDESCENDANTNODE(page,'/content/project/myCurrentPage') 
    AND page.[jcr:content/jcr:created] >= CAST('${createdDateOfCurrentPage}' AS 
    DATE) AND NAME(page) <>'${currentPageName}' ORDER BY page. 
    [jcr:content/jcr:created] asc Limit 1
    
    从[cq:page]中选择page.*作为页面,其中
    IsDescendatNode(第页“/content/project/myCurrentPage”)
    和页面。[jcr:content/jcr:created]>=CAST(“${createdDateOfCurrentPage}”作为
    日期)和名称(页面)${currentPageName}按页面顺序排列。
    [jcr:content/jcr:created]asc限制1
    
    对于上一页

    select page.* from [cq:Page] AS page WHERE 
    ISDESCENDANTNODE(page,'/content/project/myCurrentPage') 
    AND page.[jcr:content/jcr:created] <= CAST('${createdDateOfCurrentPage}' AS 
    DATE) AND NAME(page) <>'${currentPageName}' ORDER BY page. 
    [jcr:content/jcr:created] desc Limit 1
    
    从[cq:page]中选择page.*作为页面,其中
    IsDescendatNode(第页“/content/project/myCurrentPage”)
    
    和页面。[jcr:content/jcr:created]您可以使用page.listChildren()然后在页面间移动。用户可以使用它,但我必须在每个页面上迭代page.listChildren()。如果我没说错的话,那也会很费时。@JunaidZubair不,
    listChildren()
    在这种情况下比查询要快,因为您只列出了第一级子级。请参阅最佳实践中概述的内容。@JunaidZubair您的页面最终将缓存在dispatcher中。因此,如果路径;设置正确。这可以解决问题,但我有了新的要求。现在,我必须在页面的创建日期获取关于某些标准的下一页/上一页。