Pregunta

Saludos,

El contexto es MyFaces 2.0.2, posiblemente, también la adición de Tomahawk 20-1.1.10

I han creado un dataTable (actualmente un h:dataTable, pero también podría ser una t:dataTable usando Tomahawk) presentan ciertos attibutes de un List<MyObject> en un bean de respaldo. He paginación devolviendo sólo subList de la lista, así como la clasificación por clic de los encabezados de columna.

La siguiente cosa que tengo que hacer es asegurarse de la tabla siempre muestra un número fijo de filas. Por ejemplo, si el tamaño de mi página es 5 y tengo 12 elementos de la lista, necesito la página tres para mostrar los dos últimos puntos, más 3 filas en blanco.

He tratado de "rellenar" la subList con las dos nulos y los casos de myObject con valores nulos, pero esto condujo a ConcurrentModificationException al golpear la última página de la tabla (la vista estaba tratando de getDisplayList incluso como método de paginación era todavía sumando los valores adicionales.). Luego trató el relleno de la lista principal de la misma manera, pero luego llegué NullPointers en mis funciones de clasificación (una obviedad en la vista trasera). Además, todas estas cosas están por encima addng en el respaldo, cuando yo prefiero hacerlo en la vista XHTML.

(h:/t:)dataTable tiene un atributo rows, pero esto especifica el número máximo de filas que se muestran, no el mínimo, ya que necesito.

Las ideas, por favor?

¿Fue útil?

Solución

No rellenar la lista secundaria. Cojín de la lista. Preferiblemente inmediatamente después de recuperar en el grano.

Otros consejos

La solución en este caso era para rellenar la lista principal, en lugar de la lista secundaria, el uso de objetos que no son nulos, pero cuyos atributos son nulos, y añadir un cheque nulo en Comparador:

if (obj1.getSomeValue() == null) {
    return +1;
}
else if (obj2.getSomeValue() == null) {
    return -1;
}
else {
    // primary sorting code
}

que asegura elementos nulos siempre en último lugar. Funciona perfecto.

BalusC me dio el empujón en la dirección correcta, por lo que estoy aceptando su respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top