2012-06-21 8 views
5

Wie zeigen Sie XML-Inhalt mit Zeilenvorschub (hübscher Druck) in einer PrimeFaces-dataTable-Spalte an?Wie können Sie XML-Inhalt mit Zeilenvorschub (hübscher Druck) in einer PrimeFaces-dataTable-Spalte anzeigen?

Mein XML-Inhalt ist bereits im hübschen Druckformat und ich kann es mit Zeilenvorschüben sehen, wenn ich eine System.out.println von einem FacesConverter mache, der die Bytes in einen String konvertiert, bevor er in der Tabellenspalte gerendert wird. Hier

ist der Code für das 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=<" + text + ">"); 
     return text; 
    } 

} 

Und hier ist das, was ich in der Konsole zu sehen, wenn ein System.out.println oben tun:

<linkUp> 
    <ifName>eth1</ifName> 
    <linkProperty> 
    <name>1</name> 
    <flags>42</flags> 
    <extensions> 
     <name>foo</name> 
     <value>bar2</value> 
    </extensions> 
    </linkProperty> 
    <linkProperty> 
    <name>2</name> 
    <flags>4668</flags> 
    <extensions> 
     <name>foo</name> 
     <value>bar2</value> 
    </extensions> 
    </linkProperty> 
</linkUp> 

Aber wenn die Datenanzeigen In der PF dataTable-Spalte erscheint sie als einzelne Zeile ohne Zeilenvorschub. Gibt es eine Möglichkeit, sie so anzuzeigen, wie sie auf der Konsole angezeigt wird? Wie zeigen andere XML-Inhalt in einer PF-Tabelle an?

Hmmm, es sieht wie folgt funktioniert der Trick:

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

Aber jetzt bin ich mit den Zeilen beschäftigen, die die Hälfte der Seite erstrecken, weil die XML so groß ist. Ich denke, das alte Sprichwort "Beware of what you ask for" gilt hier ... :)

Dennoch wäre es schön, nur die ersten paar Zeilen anzuzeigen und in der Lage zu sein, den Rest basierend auf einem einzigen Klick zu erweitern/reduzieren Event, oder sogar in einem Feld angezeigt, wenn die Zelle doppelt angeklickt ist - Problem ist, ich habe keine Ahnung, wie dies zu tun ist oder wenn PF unterstützt ... :)

Antwort

1

Sie können erweiterbare Zeilen zu zeigen Dein gesamtes XML. Siehe ein Beispiel für die Verwendung von p:rowExpansion in Vitrine.

Verwandte Themen