0

我正在尝试在 Wicket DataView 中显示 json 数据。如果我想显示带有缩进的 json,我如何使用 java 脚本来实现这一点?

我可以找到许多资源来漂亮地格式化 json,但它们使用的是 java 脚本。我们如何从 dataview populateItem 方法内部调用 javascript 函数来格式化 json,如链接 http://jsfiddle.net/unLSJ/中所述

html

<table>
   <tr>
      <th>Name</th>
      <th>Value</th>
   </tr>
   <tr wicket:id="notificationDetails">
      <td valign="top"><span  wicket:id="name"></span></td>
      <td valign="top"><span  wicket:id="value"></span></td>
   </tr>
</table>

我的爪哇:

    dataView = new ListView<DataForTable>("notificationDetails",dataForTableList) 
{
  private static final long serialVersionUID = 1L;

  @Override
  protected void populateItem(final ListItem<DataForTable> item) 
  {
    item.setDefaultModel(new CompoundPropertyModel<DataForTable>(item.getModel()));
    item.add(new Label("name"));
    item.add(new Label("value"));
  }
};

在添加到 Label 之前,我还尝试使用 Jackson 对象映射器来格式化 json,但它没有帮助。检票口页面显示如下

mapper.defaultPrettyPrintingWriter().writeValueAsString(value);

检票口页面显示如下

 {\r\n \"action\" : \"add\",\r\n \"schedule\"... 

你能帮忙解决这个问题吗?

4

1 回答 1

0

您应该使用 MultilineLabel 而不是 Label 所以\n替换为<br/>. 您还可以替换\t&nbsp;或任何其他空格字符。在这种情况下使用MultilineLabel#setEscapeModelStrings(false).

于 2015-04-25T22:30:05.523 回答