如何在 PrimeFaces 数据表列中显示带有换行符(漂亮打印)的 XML 内容?
我的 XML 内容已经是漂亮的打印格式,当从 FacesConverter 执行 System.out.println 时,我可以通过换行看到它,该 FacesConverter 将字节转换为字符串,然后再呈现在表格列上。
这是 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 支持...:)