5

如何在 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 支持...:)

4

1 回答 1

1

您可以使用可扩展行来显示整个 XML。请参阅在展示中使用p:rowExpansion的示例。

于 2012-08-08T19:58:41.630 回答