【问题标题】:How to get a list as JSON with Struts2 [duplicate]如何使用 Struts2 获取 JSON 格式的列表 [重复]
【发布时间】:2017-12-12 15:53:12
【问题描述】:

我正在寻找作为 JSON 页面的列表。我目前正在使用 Hibernate+Struts,我已将 JSON Struts2 插件添加到我的构建路径中。

我只是简单地配置了我的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 文件的开头有一个 null 对象。我该如何解决?

{
  "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
    }
  ]
}

【问题讨论】:

  • 为什么要通过 JSON 登录?这是一个与暴露不同的问题,你根本不需要它。
  • @RomanC 现在我只想要Anagrafiche 的列表,因为我是通过浏览器登录的。但我需要制作一个 android 应用程序,所以我必须使用 JSON 管理登录。现在,如果您能帮我解决这个问题,我将非常高兴。
  • 一篇文章只能问一个问题,否则你的问题会跑题并被删除。
  • @RomanC 是的,现在我遇到了这个问题。 Login 是另一个问题。
  • 您应该编辑问题并删除与此问题无关的问题。还发布与您上一个问题中的源代码相关的链接。

标签: java json hibernate struts2


【解决方案1】:

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

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

Java:

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>   

【讨论】:

  • 检查我的更新。谢谢!
  • 也通过添加参数更新
  • 我可以用什么替换“property1, etc..”?现在我的问题是"ID_Tipo_Anagrafica": 0,这是另一个表的字段..
  • 这在列表中不可用。更换你需要的。它的正则表达式代码,因此您可以编写匹配 OGNL 表达式的正则表达式。
  • 我怎样才能使它在列表中可用?与excludeNullProperties 我得到this..
猜你喜欢
  • 2020-02-09
  • 2020-05-27
  • 2017-05-22
  • 1970-01-01
  • 2021-10-18
  • 2022-07-24
  • 2020-04-06
  • 2019-08-06
  • 1970-01-01
相关资源
最近更新 更多