I have a page with an Ajax pagination control. What it does is that when you click the page link (<a:commandLink/>), the page links and the page content are updated:
<a:outputPanel id="reviewList" rendered="true"> <a:region> <c:if test="#{fn:length(allReviews) > reviewPageSize}"> <table> <tr> <td><b>Page:</b> <c:forEach begin="0" end="#{(fn:length(allReviews)-1)/reviewPageSize}" varStatus="rowStatus"> <h:outputText value="#{rowStatus.index + 1}" rendered="#{reviewPagination.startReviewIndex == rowStatus.index * reviewPageSize}"/> <a:commandLink action="#{neighborView.paginateReview}" reRender="reviewList" rendered="#{reviewPagination.startReviewIndex != rowStatus.index * reviewPageSize}">#{rowStatus.index + 1} <f:param name="reviewPage" value="#{rowStatus.index}"/> <f:param name="ajax" value="true"/> </a:commandLink> </c:forEach> </td> </tr> </table> </c:if> <!-- here is page content --> <c:forEach begin="#{reviewPagination.startReviewIndex}" end="#{reviewPagination.endReviewIndex}" items="#{allReviews}" var="review"> <a:include viewId="WEB-INF/layout/review_template.xhtml" ajaxRendered="true"> <ui:param name="review" value="#{review}"/> </a:include> </c:forEach> </a:region> </a:outputPanel>