Render a Search Query Result
Introduction
Goal
Render the results of a search query in Hippo's delivery tier.
Background
Hippo's delivery tier provides Search APIs to query the content repository from within a delivery tier component. This page provides examples of JSP and Freemarker templates to render the result set of a query constructed and executed using either the Fluent Search API or the Legacy Search API.
Example
The example templates below render the result of a query constructed and executed as shown in the example component classes on the following two pages:
The two APIs are functionally equivalent and both result in the same HstQueryResult object. Hence, the same template can be used in combination with the examples of both APIs.
JSP
<%@ include file="/WEB-INF/jspf/htmlTags.jspf" %>
<h2>
<c:out value="${requestScope.info.title}"/> for '<c:out value="${requestScope.query}"/>' :
${requestScope.result.totalSize} results
</h2>
<ul>
<%-- Iterate through the hippoBeans on the result --%>
<c:forEach var="item" items="${requestScope.result.hippoBeans}">
<hst:link var="link" hippobean="${item}"/>
<li>
<hst:cmseditlink hippobean="${item}"/>
<a href="${link}">${item.title}</a>
<div>
<c:if test="${hst:isReadable(item, 'date.time')}">
<p><fmt:formatDate value="${item.date.time}"
type="Date" pattern="MMMM d, yyyy h:mm a"/></p>
</c:if>
<p>${item.summary}</p>
</div>
</li>
</c:forEach>
</ul>
Freemarker
<#include "/WEB-INF/freemarker/include/imports.ftl">
<h2>
${info.title?html} for '${query?html}': ${result.totalSize} results
</h2>
<ul>
<#-- Iterate through the hippoBeans on the result -->
<#if result?? && result.hippoBeans?has_content>
<#list result.hippoBeans as item>
<@hst.link var="link" hippobean=item />
<li>
<@hst.cmseditlink hippobean=item/>
<a href="${link}">${item.title?html}</a>
<div>
<#if item.date?? && item.date.time??>
<p><@fmt.formatDate value=item.date.time type="Date" pattern="MMMM d, yyyy h:mm a"/></p>
</#if>
<p>${item.summary?html}</p>
</div>
</li>
</#list>
</#if>
</ul>