0

我有这个问题:在我的 sql 数据库中,我有一个表 Utente,其主键 IDUtente 是 INT 类型并且是自动增量的。在数据库中我有:

ID|Name|....
1|Name1|....
2|Name2|....

在 Java servlet 中,我从数据库中读取数据,并以这种方式使用 Gson 序列化数据:

Gson gson = new Gson(); 
String lista = gson.toJson(utenti);
request.setAttribute("lista", lista);
request.getRequestDispatcher("GestioneUtenti.jsp").forward(request, response);

在这里没关系,因为字符串 lista 它等于:

[{"idUtente":1,"username":"a","password":"a","nome":"a","cognome":"a","dataNascita":"dic 12, 1988","telefono":"3200769667","indirizzo":"a","citta":"a","luogoDiNascita":"a","abbonamentiATempo":0,"abbonamentiAPunti":0,"dataIscrizione":"dic 12, 2000","posizione":"socio","email":"a"},{"idUtente":2,"username":"b","password":"b","nome":"b","cognome":"b","dataNascita":"giu 25, 1960","telefono":"3474213142","indirizzo":"b","citta":"b","luogoDiNascita":"b","abbonamentiATempo":0,"abbonamentiAPunti":0,"dataIscrizione":"mar 11, 2001","posizione":"non socio","email":"b"}]

现在在我的 JSP 页面中,我必须反序列化字符串,我这样做是这样的:

<%String lista = (String)request.getAttribute("lista");
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();                         
Type listType = new TypeToken<ArrayList<Utente>>() {}.getType();
ArrayList<Utente> users = gson.fromJson(lista, listType);
for(int i=0;i<users.size();i++){
out.print("<tr>");
out.print("<td>"+users.get(i).getIdUtente()+"</td>");
out.print("<td>"+users.get(i).getNome()+"</td>");
out.print("<td>"+users.get(i).getCognome()+"</td>");
    out.print("<td>"+users.get(i).getPosizione()+"</td>");
    out.print("<td>"+users.get(i).getTelefono()+"</td>");
 }

问题是打印的 ID 总是等于 0!为什么?如果有必要,我也会写我的课 Utente!

4

1 回答 1

0

为什么要将 utenti 序列化为 JSON,将其放在请求中,然后在 JSP 中反序列化?

只需将列表放入请求中并提取列表,因为您是字符串 - 不需要 GSON。

现在,如果您将它通过网络连接到客户端,那么我可以看到对 GSON 的需求,但在您的特定用例中却没有。

您的整个操作都在服务器内进行,因此您无需序列化 utenti 列表实例。

于 2013-02-03T16:55:42.537 回答