2012-06-13 40 views
5

Estoy mostrando una etiqueta (específica del idioma) para los valores en una columna. La columna es ordenable y la etiqueta JSF es diferente del valor de la base de datos. Estoy usando una tabla de datos de Primefaces con paginación.Cómo ordenar por etiqueta JSF en tablas de datos clasificables

¿Cómo puedo ordenar por etiqueta y no por el valor de la base de datos? ¿Hay algún tipo de traducción posible para que mis criterios JPA conozcan el valor diferente?

clasificación en la memoria no es una opción ya que el conjunto de datos podría ser enorme y sólo desea mostrar un subconjunto (tamaño de paginación es por ejemplo 10 elementos por página)

+0

¿No puedes usar el atributo 'sortBy =" # {myRow.mylabel} "' de ' Daniel

+0

gracias por sus sugerencias, ya lo intenté. Pero la etiqueta no se almacena en la base de datos y es allí donde tiene lugar la clasificación (bueno, en la declaración generada). Entonces, el punto es: la base de datos no tiene conocimiento de la etiqueta que ven los usuarios. sin embargo, los usuarios se preguntan acerca de un comportamiento de clasificación incorrecto – jonnie119

+0

, así que coloque esta etiqueta en su objeto que representa la fila en la tabla ..., y no? – Daniel

Respuesta

0

creo que no es posible lograr lo Estás buscando.

Su base de datos no puede ordenar a menos que sepa cuál es el valor. Puede traducir la etiqueta y ordenarla después de cargarla desde la base de datos, pero no desea ordenación en memoria debido a restricciones de recursos.

La mejor solución sería implementar una solución de localización en la base de datos. Entonces su DB podría buscar la traducción de cada etiqueta y aplicar la clasificación. Personalmente creo que este es el camino a seguir cuando se localiza cualquier aplicación, ya que permite traducciones fáciles por parte de los usuarios finales. Incluso podría escribir un proveedor de paquetes de recursos de Java que realice búsquedas de db en lugar de referirse a paquetes de sistemas de archivos.

Cuestiones relacionadas