0

我需要在叠加层中显示搜索结果页面。为此,我创建了一个 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>

然而,这并没有奏效。谁能告诉我如何将查询字符串添加到路径中?

4

1 回答 1

1

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

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

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

<sling:include path="/content/myapp/searchpage.html" addSelectors="games">
...
String keyword = slingRequest.getRequestPathInfo().getSelectorsString();
于 2013-05-15T07:56:08.960 回答