Struts y paginacion
Llevo más de dos semanas con un problema que no consigo resolver.
Quiero mostrar un listado de operaciones. En primer lugar hay un formulario para establecer los criterios de búsqueda donde, al pulsar aceptar, se ejecuta una action que extrae las operaciones de la base de datos y las coloca en una lista. Además, en esa action creo otra lista en sesión llamada "paginación" donde almaceno el nº de operaciones totales a mostrar, las operaciones por página a mostrar (una constante) y el nº de páginas a mostrar, con el fin de usarla para la paginación. Hecho esto, redirijo mediante struts-config.xml a la jsp donde se deben mostrar los resultados.
Con la primera página no hay problema, pero todas las siguientes me salen vacías, es decir, aparecen los enlaces anterior y siguiente pero nada del listado. He simplificado hasta el punto de cambiar el listado de operaciones por la cadena "hola", pero del mismo modo esta cadena me aparece en la primera página pero no en las siguientes. La navegación parece funcionar, los valores de "pageNumber" y "pageOffset" son correctos para cada página, pero no se muestra nada excepto en la primera página. Para la paginación utilizo Pager Tag Library, y este es más o menos el código de la jsp:
...
<%
List paginacion = (List) session.getAttribute("listaPaginacion");
int operacsXPag = ((Integer) paginacion.get(0)).intValue();
int operacsTot = ((Integer) paginacion.get(1)).intValue();
int pagsTot = ((Integer) paginacion.get(2)).intValue();
%>
<pg:pager url="visualizarOperaciones" items="<%= operacsTot %>" maxPageItems="<%= operacsXPag %>" maxIndexPages="<%= pagsTot %>" export="pageOffset, pagerPageNumber=pageNumber">
<table>
<tr>
<td>
<pg:item>
Hola
</pg:item>
<pg:index>
<table>
<tr>
<td>
<pg:prev export="pageUrl, pageNumber">
<html:link action="<%= pageUrl %>
">
<bean:message key="link.ant"/>
</html:link>
</pg:prev>
</td>
<td>
<pg:next export="pageUrl, pageNumber">
<html:link action="<%= pageUrl %>
">
<bean:message key="link.sig"/>
</html:link>
</pg:next>
</td>
</tr>
</table>
</pg:index>
</td>
</tr>
</table>
</pg:pager>
...
La url a la que redirijo y que figura en pg:pager, "visualizarOperaciones", es una action que simplemente redirecciona de nuevo a esta jsp. No tiene más lógica. Realmente no sé si debe tenerla! En principio creo que no porque todo está en la jsp! El contenido de pg:item es lo que se muestra en la primera página pero no en las siguientes, dando igual que sea un complejo listado de operaciones que una sencilla cadena "hola". Es por eso que he omitido el código para mostrar el listado y he puesto la cadena.
Si no entiendes algo preguntádmelo.
Quiero mostrar un listado de operaciones. En primer lugar hay un formulario para establecer los criterios de búsqueda donde, al pulsar aceptar, se ejecuta una action que extrae las operaciones de la base de datos y las coloca en una lista. Además, en esa action creo otra lista en sesión llamada "paginación" donde almaceno el nº de operaciones totales a mostrar, las operaciones por página a mostrar (una constante) y el nº de páginas a mostrar, con el fin de usarla para la paginación. Hecho esto, redirijo mediante struts-config.xml a la jsp donde se deben mostrar los resultados.
Con la primera página no hay problema, pero todas las siguientes me salen vacías, es decir, aparecen los enlaces anterior y siguiente pero nada del listado. He simplificado hasta el punto de cambiar el listado de operaciones por la cadena "hola", pero del mismo modo esta cadena me aparece en la primera página pero no en las siguientes. La navegación parece funcionar, los valores de "pageNumber" y "pageOffset" son correctos para cada página, pero no se muestra nada excepto en la primera página. Para la paginación utilizo Pager Tag Library, y este es más o menos el código de la jsp:
...
<%
List paginacion = (List) session.getAttribute("listaPaginacion");
int operacsXPag = ((Integer) paginacion.get(0)).intValue();
int operacsTot = ((Integer) paginacion.get(1)).intValue();
int pagsTot = ((Integer) paginacion.get(2)).intValue();
%>
<pg:pager url="visualizarOperaciones" items="<%= operacsTot %>" maxPageItems="<%= operacsXPag %>" maxIndexPages="<%= pagsTot %>" export="pageOffset, pagerPageNumber=pageNumber">
<table>
<tr>
<td>
<pg:item>
Hola
</pg:item>
<pg:index>
<table>
<tr>
<td>
<pg:prev export="pageUrl, pageNumber">
<html:link action="<%= pageUrl %>
">
<bean:message key="link.ant"/>
</html:link>
</pg:prev>
</td>
<td>
<pg:next export="pageUrl, pageNumber">
<html:link action="<%= pageUrl %>
">
<bean:message key="link.sig"/>
</html:link>
</pg:next>
</td>
</tr>
</table>
</pg:index>
</td>
</tr>
</table>
</pg:pager>
...
La url a la que redirijo y que figura en pg:pager, "visualizarOperaciones", es una action que simplemente redirecciona de nuevo a esta jsp. No tiene más lógica. Realmente no sé si debe tenerla! En principio creo que no porque todo está en la jsp! El contenido de pg:item es lo que se muestra en la primera página pero no en las siguientes, dando igual que sea un complejo listado de operaciones que una sencilla cadena "hola". Es por eso que he omitido el código para mostrar el listado y he puesto la cadena.
Si no entiendes algo preguntádmelo.
1 respuesta
Respuesta de goblin_ax