Para esta tela foram implementadas as tags para paginação e ordenação dos dados recuperados na forma de Grid.

Paginação

Nos jsps de pesquisa faz-se necessário a inclusão dos seguintes códigos descritos logo abaixo.

Variáreis de controle

Definição de campos escondidos necessários ao controle da navegação em tempo de execução:

<%-- tamanho página --%>
<html:hidden property="pageSize" />
<%-- página atual --%>
<html:hidden property="pageNumber" />

campos escondidos necessários ao controle da ordenação:

<%-- ordenação atual (ASC/DESC) --%>
<html:hidden property="sortColumn" />
<%-- campo ordenado (COLUMN) --%>
<html:hidden property="sortOrder" />

Note que alguns parâmetros são também setados no arquivo Struts-config.xml:

<!-- Campos da paginação por formulário -->
<form-property name="pageSize" type="java.lang.String" initial="10"/>
<form-property name="pageNumber" type="java.lang.String" initial="1"/>
<form-property name="sortColumn" type="java.lang.String" initial="title"/>
<form-property name="sortOrder" type="java.lang.String" initial="asc"/>

Estes são os valores iniciais da paginação e ordenação, setados para o formulário em questão.

Tag Pager

Tag “pai de todos”. Todas as demais tags (de navegação e ordenação) devem estar dentro desta tag principal.
Abaixo definimos a variável local autoresPage (lista paginada), com base na variável att.list.paged (tjpr.entity.pagination.Page) pendurada no request, que deverá ser utilizada com a tag forEach para mostrar os valores num grid:

<page:pager form="autorPesquisaForm" page="att.list.paged" var="autoresPage">

Ou poderíamos passar um objeto List substituindo-se a propriedade page pela propriedade items.

Tag Navigator

Ainda no jsp devemos ter a definição do objeto navegador no ponto em que se deseja que este seja apresentado na tela:

<page:navigator />

Tag Sorter

No cabeçalho da tabela (grid) ao se colocar a descrição das colunas, adicionar as descrições juntamente com a tag de ordenação (indicando o nome da coluna dentro do objeto paginado) em cada campo que poderá ser ordenado:

<page:sorter column="nome" ><fmt:message key="autor.nome"/></page:sorter>

Tag Selector

Para utilizarmos o recurso de múltipla seleção junto com o objeto page, contamos com a tag “page:selector”, que guarda o estado do array de seleção utilizado entre as requisições.
Devemos indicar o campo do formulário que contém a seleção e recuperar os seus valores. Não é necessário realizar mais nenhuma outra configuração no JSP ou na Action.

<%-- Verificar os campos de múltipla seleção --%>
<page:selector selectionField="selection" selectionFieldValues="${requestScope.livroPesquisaMultiplaSelecaoForm.map.selection}" />

Action

Nas actions, a aplicação só deve se preocupar com a recuperação dos dados a serem paginados, o que pode se dar através de um objeto Page ou uma coleção de itens, normalmente.

Definindo o Formulário

Lembramos que para o correto funcionamento dos recursos de paginação e ordenação em um grid, é necessário a inclusão das seguintes propriedades no momento da definição do formulário (preferencialmente DynaActionForm) no arquivo Struts-config.xml:

<!-- Campos da paginação por formulário -->
<form-property name="pageSize" type="java.lang.String" initial="10"/>
<form-property name="pageNumber" type="java.lang.String" initial="1"/>
<form-property name="sortColumn" type="java.lang.String" initial="nome"/>
<form-property name="sortOrder" type="java.lang.String" initial="asc"/>