jueves, 30 de junio de 2011

Parametros de ordenamiento en listas Parcialmente ordenadas en displayTag

 A veces necitamos que no sea displaytag lo que ordene y pagine la colección (para no tener toda la colección en memoria) y manejar el ordenamiento nosotros mismo.

 displaytag ofrece un mecanismo por el cual uno desde el action de struts puede obtener datos necesarios para la paginación y ordenamiento como son el nombre de la columna y el numero de pagina.

  Tales parámetros se pueden obtener del siguiente modo

para saber el nombre (nombre definido en la propiedad sortName="" de la tabla de displaytag)
request.getParameter(paramEncoder.encodeParameterName(TableTagParameters.PARAMETER_SORT))   

y este es para saber el orden 1 o 2 (ASC o DESC)
request.getParameter(paramEncoder.encodeParameterName(TableTagParameters.PARAMETER_ORDER))

Es importante tener en cuenta que cuando se invoca por primera, no va a tener un valor, va a ser vacío,
para evitar eso se puede asignar un valor por defecto utilizando el método defaultIfEmpty de la clase org.apache.commons.lang.StringUtils

StringUtils.defaultIfEmpty(request.getParameter(paramEncoder.encodeParameterName(TableTagParameters.PARAMETER_ORDER)),"1");
 y en la primera vez que va a estar vacío se le asignara el "1".