0

私たちはそれを理解しようと数日を費やしましたが、できなかったので、ここであなたの意見を求めることにしました.

JSON データを返すコレクションがあります。以下のコードは、テーブルとサブグリッド テーブルをレンダリングします。親テーブルには、問題のないデータがいくつかあります。しかし、subgrid テーブルでは何もロードできません。

私たちは何を間違っていますか?

 {
   "sales":[
      {
         "client":{
            "id":1,
            "name":"Jon Doe",
            "phone":"35900022233"
         },
         "goods":[
            {
               "description":"Good Description",
               "id":3,
               "name":"Good name",
               "price":10.0
            },
            {
               "description":"Good Description 2",
               "id":2,
               "name":"Good name 2",
               "price":1.87
            },
            {
               "description":"Good Description 3",
               "id":1,
               "name":"Good name 3",
               "price":2.5
            }
         ]
}

<s:url var="sales" value="/getSales"/>

<sjg:grid
    id="salesTable"
    caption="Sales List"
    dataType="json"
    href="%{sales}"
    pager="true"
    gridModel="sales"
    rowList="10,15,20"
    rowNum="15"
    rownumbers="true"
    width="900"
    shrinkToFit="true"
    viewrecords="true"
>

    <sjg:grid 
        id="goodssubgridtable"
        caption="Goods"
        dataType="json"
        subGridUrl="%{sales}"
        gridModel="goods"
        width="true"
        shrinkToFit="false"
    >
    
    <sjg:gridColumn name="name"  title="Name"  />
    <sjg:gridColumn name="description"  title="Description"  />
    <sjg:gridColumn name="price" title="Price" />
</sjg:grid>

<sjg:gridColumn name="id" index="id" width="50" title="ID" sortable="false"/>
<sjg:gridColumn name="quantity" index="quantity" width="200" title="Quantity" sortable="false" />
<sjg:gridColumn name="totalAmount" index="totalAmount" width="300" title="Total amount" sortable="false" />
<sjg:gridColumn name="client.id" title="Client ID" width="100"/>
<sjg:gridColumn name="client.name" title="Client name" />
<sjg:gridColumn name="client.phone" title="Phone number" />

</sjg:グリッド>

4

1 に答える 1

0

は返されるオブジェクトのルートにないためGoods、 のように正しいパスを表記に使用する必要がありますgridModel="sales[0].goods"

JSON オブジェクトをトラバースする方法の詳細については、この驚くべき回答を参照してください。

編集: ここに投稿した JSON は不正な形式のようですが、おそらくコピーと貼り付けの問題です。ただし、ハードコードされたインデックスを試してください。それが機能する場合は、可能であれば、OGNL を通過する行のインデックスを取得する必要がありますiterator

しかし、公式の Showcase のソース コードを見ると、まったく異なる方法で行われています。グリッドとサブグリッドの 2 つの異なるアクションを指す 2 つの異なる URL です。それが本来の使い方だと思います。アクションが実行するビジネスを確認する必要がある場合は、リポジトリを参照してアクションも見つけます

于 2013-07-22T16:41:53.523 に答える