如何在覆盖中显示搜索结果页面

how to show search results page in an overlay

本文关键字:搜索结果 显示 覆盖      更新时间:2023-09-26

我需要在覆盖中显示搜索结果页面。为此我创建了一个div:

  <div class="overlaybox" id="overlaybox" style="display:none">
      <sling:include path="/content/myapp/searchpage.html" />     
  </div>

我能够使用上面的代码显示覆盖的搜索页面(不附加任何查询字符串的路径)。然而,现在,当我点击搜索时,我需要将搜索中输入的查询作为请求参数附加到这个searchpage.html中,然后只有搜索结果将在搜索页面中填充。目前,在上面的代码中,没有传递任何请求参数,因此没有显示任何结果。所以我试着用下面的代码:

    String keyword="games"
    String path="/content/myapp/searchpage.html?q="+keyword; 

并在sling:include中使用该路径,如下所示

    <div class="overlaybox" id="overlaybox" style="display:none">
        <sling:include path="<%=path%>" />     
    </div>

然而,这不起作用。谁能告诉我如何将查询字符串添加到路径中?

当您sling:include搜索页面时,您的页面组件呈现脚本(假定是searchpage.jsp)将被执行。因此,您应该能够使用标准代码从该脚本读取查询参数,例如:

String keyword = slingRequest.getParameter("q");

如果您传递的参数实际上不在URL查询字符串中,但需要硬编码,也许您可以使用选择器:

<sling:include path="/content/myapp/searchpage.html" addSelectors="games">
...
String keyword = slingRequest.getRequestPathInfo().getSelectorsString();