如何使用Struts2获取JSON列表

时间:2017-07-08 12:22:31

标签: java json hibernate struts2

我正在搜索获取列表作为JSON页面。我目前正在使用hibernate + struts,我已添加到我的构建路径JSON Struts2 plugin

我只是配置了我的struts.xml,但我总是获得相同的ERRORS,如何通过JSON登录?

这些是我的课程:

    /////// Anagrafica.hbm.xml    ///////
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="it.unirc.pjam.Anagrafica.Model.Anagrafica" table="ANAGRAFICA">
            <id name="ID_Anagrafica" type="java.lang.Integer">
                <column name="ID_Anagrafica" />
                <generator class="identity" />
            </id>
            <property name="Nome" type="string">
                <column name="Nome" not-null="true" />
            </property>
            <property name="Cognome" type="string">
                <column name="Cognome" not-null="true" />
            </property>
            <property name="Provincia" type="string">
                <column name="Provincia" not-null="true" />
            </property>
            <property name="Codice_fiscale" type="string">
                <column name="Codice_fiscale" not-null="true" />
            </property>
            <many-to-one name="ruolo" class="it.unirc.pjam.Ruolo.Model.Ruolo" lazy="false">
                <column name="ID_Tipo_Anagrafica" not-null="true" />
            </many-to-one>
            <one-to-one name="utenza" class="it.unirc.pjam.Utenza.Model.Utenza"
                cascade="save-update" property-ref="anagrafica" foreign-key="anagrafica">
            </one-to-one>


            <set name="scontrini" inverse="true" cascade="save-update" lazy="false" >
                <key column="ID_Anagrafica" not-null="false" unique="true" />
                <one-to-many class="it.unirc.pjam.Scontrino.Model.Scontrino" />
            </set>

            <one-to-one name="tessera" class="it.unirc.pjam.Tessera.Model.Tessera"
                cascade="save-update" property-ref="anagrafica" foreign-key="anagrafica">
            </one-to-one>
        </class>
    </hibernate-mapping>

/////// method of AnagraficaStruts.java    ///////
public String AnagraficheJSON(){
        Ruoli = ruoloDAO.getRuoli();
        anagrafiche = dao.getAnagrafiche();
        return "success";
    }

/////// action in struts.xml    ///////
        <!-- JSON -->
        <action name="listAnagrafiche1" method="listAnagrafiche"
            class="it.unirc.pjam.Action.AnagraficaStruts">
            <result type="json">
                <param name="ignoreHierarchy">false</param>
            </result>
        </action>
        <!-- FINE JSON -->
编辑:我成功获得了JSON,但是我有不需要的字段,如RuoloScontrinoCatalogo等,我在JSON文件的开头有一个空对象。我该如何解决?

{
  "ID_Anagrafica": 0,
  "anagrafica": {
    "ID_Anagrafica": 0,
    "ID_Tipo_Anagrafica": 0,
    "codice_fiscale": null,
    "cognome": null,
    "nome": null,
    "provincia": null,
    "ruolo": null,
    "scontrini": [

    ],
    "tessera": null,
    "utenza": null
  },
  "anagrafiche": [
    {
      "ID_Anagrafica": 4,
      "ID_Tipo_Anagrafica": 0,
      "codice_fiscale": "123123",
      "cognome": "prova",
      "nome": "manlio",
      "provincia": "r",
      "ruolo": {
        "anagrafiche": [
          null
        ],
        "descrizione": "Cassiere",
        "id": 2
      },
      "scontrini": [
        {
          "anagrafica": null,
          "data": null,
          "id": 7,
          "importoTotale": 1300.0,
          "iva": 22.0,
          "prodotti": [
            {
              "catalogo": [
                {
                  "descrizione": "mac",
                  "id": 5,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "macbook air",
              "id": 7,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 800.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "mac"
            },
            {
              "catalogo": [
                {
                  "descrizione": "notebook",
                  "id": 6,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "asus",
              "id": 6,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 500.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "note"
            }
          ],
          "totalePezzi": 2
        },
        {
          "anagrafica": null,
          "data": null,
          "id": 3,
          "importoTotale": 6300.0,
          "iva": 22.0,
          "prodotti": [
            {
              "catalogo": [
                {
                  "descrizione": "mac",
                  "id": 5,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "macbook air",
              "id": 7,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 800.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "mac"
            },
            {
              "catalogo": [
                {
                  "descrizione": "notebook",
                  "id": 6,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "asus",
              "id": 6,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 500.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "note"
            },
            {
              "catalogo": [

              ],
              "descrizione": "macbook pro",
              "id": 8,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 1000.0,
              "prezzoAcquistato": 500.0,
              "prezzoScontato": 200.0,
              "scontrini": [
                null
              ],
              "tipo": "mac"
            }
          ],
          "totalePezzi": 7
        },
        {
          "anagrafica": null,
          "data": null,
          "id": 4,
          "importoTotale": 45800.0,
          "iva": 22.0,
          "prodotti": [
            {
              "catalogo": [
                {
                  "descrizione": "mac",
                  "id": 5,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "macbook air",
              "id": 7,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 800.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "mac"
            },
            {
              "catalogo": [
                {
                  "descrizione": "notebook",
                  "id": 6,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "asus",
              "id": 6,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 500.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "note"
            }
          ],
          "totalePezzi": 91
        },
        {
          "anagrafica": null,
          "data": null,
          "id": 1,
          "importoTotale": 4900.0,
          "iva": 22.0,
          "prodotti": [
            {
              "catalogo": [
                {
                  "descrizione": "mac",
                  "id": 5,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "macbook air",
              "id": 7,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 800.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "mac"
            },
            {
              "catalogo": [
                {
                  "descrizione": "notebook",
                  "id": 6,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "asus",
              "id": 6,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 500.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "note"
            }
          ],
          "totalePezzi": 8
        },
        {
          "anagrafica": null,
          "data": null,
          "id": 2,
          "importoTotale": 1300.0,
          "iva": 22.0,
          "prodotti": [
            {
              "catalogo": [
                {
                  "descrizione": "mac",
                  "id": 5,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "macbook air",
              "id": 7,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 800.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "mac"
            },
            {
              "catalogo": [
                {
                  "descrizione": "notebook",
                  "id": 6,
                  "prodotti": [
                    null
                  ]
                }
              ],
              "descrizione": "asus",
              "id": 6,
              "nPezziDisponbili": 1,
              "nPezziVenduti": 1,
              "prezzo": 500.0,
              "prezzoAcquistato": 10.0,
              "prezzoScontato": 10.0,
              "scontrini": null,
              "tipo": "note"
            }
          ],
          "totalePezzi": 2
        }
      ],
      "tessera": {
        "anagrafica": null,
        "id": 4,
        "n_tessera": 12,
        "punti": 5.0
      },
      "utenza": {
        "anagrafica": null,
        "password": "admin",
        "stato_Utenza": "attiva",
        "username": "admin"
      }
    },
    {
      "ID_Anagrafica": 5,
      "ID_Tipo_Anagrafica": 0,
      "codice_fiscale": "boh",
      "cognome": "fiore",
      "nome": "fiore",
      "provincia": "rm",
      "ruolo": {
        "anagrafiche": [
          null
        ],
        "descrizione": "Proprietario",
        "id": 1
      },
      "scontrini": [

      ],
      "tessera": {
        "anagrafica": null,
        "id": 5,
        "n_tessera": 200,
        "punti": 0.0
      },
      "utenza": {
        "anagrafica": null,
        "password": "fiore",
        "stato_Utenza": "disattiva",
        "username": "fiore"
      }
    }
  ],
  "codice_fiscale": null,
  "cognome": null,
  "idRuolo": 0,
  "nome": null,
  "provincia": null,
  "ruoli": [
    {
      "anagrafiche": [

      ],
      "descrizione": "CapoMastrogiulia Gioia",
      "id": 4
    },
    {
      "anagrafiche": [
        {
          "ID_Anagrafica": 4,
          "ID_Tipo_Anagrafica": 0,
          "codice_fiscale": "123123",
          "cognome": "prova",
          "nome": "manlio",
          "provincia": "r",
          "ruolo": null,
          "scontrini": [
            {
              "anagrafica": null,
              "data": null,
              "id": 2,
              "importoTotale": 1300.0,
              "iva": 22.0,
              "prodotti": [
                {
                  "catalogo": [
                    {
                      "descrizione": "notebook",
                      "id": 6,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "asus",
                  "id": 6,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 500.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "note"
                },
                {
                  "catalogo": [
                    {
                      "descrizione": "mac",
                      "id": 5,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "macbook air",
                  "id": 7,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 800.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "mac"
                }
              ],
              "totalePezzi": 2
            },
            {
              "anagrafica": null,
              "data": null,
              "id": 3,
              "importoTotale": 6300.0,
              "iva": 22.0,
              "prodotti": [
                {
                  "catalogo": [

                  ],
                  "descrizione": "macbook pro",
                  "id": 8,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 1000.0,
                  "prezzoAcquistato": 500.0,
                  "prezzoScontato": 200.0,
                  "scontrini": [
                    null
                  ],
                  "tipo": "mac"
                },
                {
                  "catalogo": [
                    {
                      "descrizione": "notebook",
                      "id": 6,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "asus",
                  "id": 6,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 500.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "note"
                },
                {
                  "catalogo": [
                    {
                      "descrizione": "mac",
                      "id": 5,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "macbook air",
                  "id": 7,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 800.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "mac"
                }
              ],
              "totalePezzi": 7
            },
            {
              "anagrafica": null,
              "data": null,
              "id": 4,
              "importoTotale": 45800.0,
              "iva": 22.0,
              "prodotti": [
                {
                  "catalogo": [
                    {
                      "descrizione": "notebook",
                      "id": 6,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "asus",
                  "id": 6,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 500.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "note"
                },
                {
                  "catalogo": [
                    {
                      "descrizione": "mac",
                      "id": 5,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "macbook air",
                  "id": 7,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 800.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "mac"
                }
              ],
              "totalePezzi": 91
            },
            {
              "anagrafica": null,
              "data": null,
              "id": 1,
              "importoTotale": 4900.0,
              "iva": 22.0,
              "prodotti": [
                {
                  "catalogo": [
                    {
                      "descrizione": "notebook",
                      "id": 6,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "asus",
                  "id": 6,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 500.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "note"
                },
                {
                  "catalogo": [
                    {
                      "descrizione": "mac",
                      "id": 5,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "macbook air",
                  "id": 7,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 800.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "mac"
                }
              ],
              "totalePezzi": 8
            },
            {
              "anagrafica": null,
              "data": null,
              "id": 7,
              "importoTotale": 1300.0,
              "iva": 22.0,
              "prodotti": [
                {
                  "catalogo": [
                    {
                      "descrizione": "notebook",
                      "id": 6,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "asus",
                  "id": 6,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 500.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "note"
                },
                {
                  "catalogo": [
                    {
                      "descrizione": "mac",
                      "id": 5,
                      "prodotti": [
                        null
                      ]
                    }
                  ],
                  "descrizione": "macbook air",
                  "id": 7,
                  "nPezziDisponbili": 1,
                  "nPezziVenduti": 1,
                  "prezzo": 800.0,
                  "prezzoAcquistato": 10.0,
                  "prezzoScontato": 10.0,
                  "scontrini": null,
                  "tipo": "mac"
                }
              ],
              "totalePezzi": 2
            }
          ],
          "tessera": {
            "anagrafica": null,
            "id": 4,
            "n_tessera": 12,
            "punti": 5.0
          },
          "utenza": {
            "anagrafica": null,
            "password": "admin",
            "stato_Utenza": "attiva",
            "username": "admin"
          }
        }
      ],
      "descrizione": "Cassiere",
      "id": 2
    },
    {
      "anagrafiche": [
        {
          "ID_Anagrafica": 5,
          "ID_Tipo_Anagrafica": 0,
          "codice_fiscale": "boh",
          "cognome": "fiore",
          "nome": "fiore",
          "provincia": "rm",
          "ruolo": null,
          "scontrini": [

          ],
          "tessera": {
            "anagrafica": null,
            "id": 5,
            "n_tessera": 200,
            "punti": 0.0
          },
          "utenza": {
            "anagrafica": null,
            "password": "fiore",
            "stato_Utenza": "disattiva",
            "username": "fiore"
          }
        }
      ],
      "descrizione": "Proprietario",
      "id": 1
    },
    {
      "anagrafiche": [

      ],
      "descrizione": "supervisore",
      "id": 3
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

您应该将json结果配置为仅包含要返回的属性,而不是json结果所需的所有属性。默认情况下,JSON插件使用action bean作为根对象来序列化为JSON。

您应手动配置要在结果中包含/排除的属性。

<强>爪哇:

public List getAnagraficheList(){ return anagrafiche; }

<强> XML:

<!-- Result config -->
<result type="json">
  <param name="includeProperties">
    <!-- include only properties that aren't loaded lazy -->
    ^anagraficheList\[\d+\]\.property1,
    ^anagraficheList\[\d+\]\.property2,
    ^anagrapfcheList\[\d+\]\.property3
  </param>
  <param name="excludeNullProperties">true</param>
</result>