PrimeFaces dataTable列にラインフィード(きれいな印刷)を含むXMLコンテンツをどのように表示しますか?
私のXMLコンテンツはすでにきれいな印刷形式であり、テーブル列にレンダリングされる前にバイトを文字列に変換するFacesConverterからSystem.out.printlnを実行すると、ラインフィードで表示できます。
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;
}
}
上記のSystem.out.printlnを実行すると、コンソールに表示される内容は次のとおりです。
<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>
しかし、データがPF dataTable列に表示される場合、データは改行なしで1行の文字列として表示されます-コンソールに表示されるように表示する方法はありますか?他の人はどのようにしてXMLコンテンツをPFテーブルに表示しますか?
うーん、これはトリックを行うように見えます:
.whiteSpaceClass{
white-space: pre-wrap;
}
しかし、XMLが非常に大きいため、ページの半分にまたがる行を処理する必要があります。私は古いことわざ「あなたが求めるものに注意してください」がここに当てはまると思います...:)
それでも、最初の数行だけを表示し、シングルクリックイベントに基づいて残りを展開/折りたたむことができたり、セルがダブルクリックされたときにボックスに表示したりできると便利です-問題は、私には方法がわかりませんそれを行うか、PFがそれをサポートしている場合... :)