如何使用javascript格式化wicket dataview中的json

时间:2015-04-24 23:04:21

标签: java javascript apache wicket-6

我正在尝试在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>

我的Java:

    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"));
  }
};

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

mapper.defaultPrettyPrintingWriter().writeValueAsString(value);

wicket页面显示如下

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

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

1 个答案:

答案 0 :(得分:0)

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