为什么JSON发送的数据无法在表中正确显示?

时间:2013-05-28 16:05:49

标签: java javascript jquery struts2 handsontable

我在正确显示表中的JSON时遇到问题。我正在使用handontable在网站上构建网格。我认为,我需要做的就是以正确的JSON格式将数据发送到handontable link

我使用struts2-json-plugin将Java对象序列化为JSON格式,下面的JSON由插件自动生成。

在将JSON发送到handontable之后不幸,在表中只有[object Object]的值只出现在表的第一个单元格中,而不是出现在整行(在不同列中)的实际值,而不是只在第一个牢房......

  • 我错误的表格列和值的屏幕截图:

enter image description here

  • 包含预期表格列和值的屏幕截图:

enter image description here

我正在从后端发送JSON:

{
  "values": [
    {
      "fieldDTO": [
        {
          "value": "Elda"
        },
        {
          "value": "HCPP"
        },
        {
          "value": "Yes"
        },
        {
          "value": "Green"
        }
      ]
    }
  ],
  "headers": [
    "Name",
    "Qualification",
    "Certification",
    "Classification"
  ],
  "rows": [
    "Albania"
  ]
};

显示如下表格:

<div id="spreadsheet"></div>
$("#spreadsheet").handsontable({
  startRows: 4,
  startCols: 20,
  rowHeaders: data.rows,
  colHeaders: data.headers,
  data: data.values,
  contextMenu: true,
  width: 1000,
  manualColumnResize: true,
  manualColumnMove: true,
  columnSorting: true
});

FIDDLE: 您可以在FIDDLE HERE中查看。

为什么会失败?我的JSON格式在每列中显示数据是否不正确?我需要在一行中显示集合FieldDTO的列表,这就是JSON如上形式的原因。如何使这段代码(在表格中显示数据)正常工作?

1 个答案:

答案 0 :(得分:1)

您需要在调用的columns中指定handontable属性,以便深入了解您的(稍微有点奇怪,见下文)数据结构:

http://jsfiddle.net/dwu2E/

$("#spreadsheet").handsontable({
  // etc...
  columns: [
    { data: "fieldDTO.0.value" }, 
    { data: "fieldDTO.1.value" }, 
    { data: "fieldDTO.2.value" },
    { data: "fieldDTO.3.value" }
  ]
});

See the docs for the array syntax for more info

我说“奇怪”,因为在对象中而不是在数组中使用适当命名的列会更好。基于位置的结构很脆弱。