¿Cómo se muestra el contenido XML con las fonts de línea (impresión bonita) en una columna de tabla de datos de PrimeFaces?

¿Cómo se muestra el contenido XML con las fonts de línea (impresión bonita) en una columna de tabla de datos de PrimeFaces?

Mi contenido XML ya está en un formato bastante impreso y puedo verlo con las líneas de información cuando hago un System.out.println desde un FacesConverter que convierte los bytes en una cadena antes de que se represente en la columna de la tabla.

Aquí está el código para el FacesConverter:

@FacesConverter(value="xmlStream") public class ByteConverter implements Converter { @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { byte[] buffer = null; try{ buffer = value.getBytes("UTF-8"); }catch(UnsupportedEncodingException e){ buffer = value.getBytes(); } return buffer; } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { String text = null; if (value instanceof byte[]){ try{ text = new String((byte[])value, "UTF-8"); }catch(UnsupportedEncodingException e){ text = new String((byte[])value); } } System.out.println("text="); return text; } } 

Y esto es lo que veo en la consola cuando hago un System.out.println arriba:

  eth1  1 42  foo bar2    2 4668  foo bar2    

Pero cuando los datos se muestran en la columna de tabla de datos de PF, aparecen como una cadena de línea única sin avances de línea. ¿Hay alguna forma de mostrarlos como se muestran en la consola? ¿Cómo muestran los demás contenido XML en una tabla PF?

Hmmm, parece que esto hace el truco:

 .whiteSpaceClass{ white-space: pre-wrap; } 

Pero ahora tengo que lidiar con las filas que abarcan la mitad de la página porque el XML es muy grande. Supongo que el viejo dicho “Cuidado con lo que pides” se aplica aquí … 🙂

Aún así, sería bueno mostrar solo las primeras líneas y poder expandir / contraer el rest en función del evento de un solo clic, o incluso mostrarlo en un cuadro cuando se hace doble clic en la celda. El problema es que no tengo idea de cómo para hacer eso o si PF soporta eso … 🙂

Puedes usar filas expandibles para mostrar todo tu XML. Vea un ejemplo del uso de p: rowExpansion en el escaparate.