如何在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列上时,它显示为没有换行符的单行字符串 - 有没有办法在控制台上显示它?其他人如何在PF表中显示XML内容?
嗯,看起来这就是诀窍:.whiteSpaceClass{
white-space: pre-wrap;
}
但是现在我不得不处理跨越一半页面的行,因为XML太大了。我想那句老话“小心你要求的东西”适用于......:)
尽管如此,只显示前几行并且能够基于单击事件展开/折叠其余部分会很好,甚至可以在双击单元格时将其显示在框中 - 问题是,我有不知道如何做到这一点,或PF是否支持......:)