0

私はいくつかの GWT Web アプリケーションを開発しました。最新のものは、別のものを少し修正したものです。最新のものを除いて、それらはすべてうまく機能します。例外は次のとおりです。

The response could not be deserialized

Hibernate と GWT の間で Hibernate と Data Transfer Objects を使用しています。各 DTO は java.io.Serializable インターフェイスを実装します。前に言ったように、他のアプリケーションではうまく機能します。誰かがこのエラーで私を助けてくれますか? 何が原因かわかりません。

私のHibernateオブジェクトコードは次のとおりです。

public List<AttributeDTO> getAttributes(){
    String sql = "from Attribute where (select max(tDate) from Attribute)-tDate < '0 days 00:05'";
    List<Attribute> attributes = new ArrayList<Attribute>(DatabaseManager.createQuery(sql));
    List<AttributeDTO> attributeDTOs = new ArrayList<AttributeDTO>(attributes != null ? attributes.size() : 0);
    if (attributes != null) {
        for (Attribute attribute : attributes) {
            String date = format.format(attribute.gettDate());
            attributeDTOs.add(new AttributeDTO(attribute.getiAttrId(),attribute.getsName(),attribute.getsValue(),date,attribute.getiDeviceId(),attribute.getsUnits(),new ApplicationFieldDTO()));
        }
    }
    return attributeDTOs;
}

そして AttributeDTO は次のとおりです。

public class AttributeDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    private int iAttrId;
    private String name;
    private String value;
    private String date;
    private String units;
    private int iDeviceId;
    private ApplicationFieldDTO appField;

    public AttributeDTO() {}

    public AttributeDTO(int attrId, String name, String value, String date, int deviceId, String units, ApplicationFieldDTO appField) {
        this.iAttrId = attrId;
        this.name = name;
        this.value = value;
        this.date = date;
        this.iDeviceId = deviceId;
        this.units = units;
        this.appField = appField;
    }
}

GWT からは、AttributeDTO のリストを返す getAttributes() メソッドを呼び出します。

ありがとう!!!

4

4 に答える 4

1

このエラーは、クラスの1つのメンバーのみがシリアル化できない場合にも表示されます。したがって、このエラーはApplicationFieldDTOの定義にもある可能性があります。

ちなみに、データ転送オブジェクトを使用する代わりに、Gileadを使用することもでき、遅延読み込みも機能します。(ただし、既存のアプリケーションの場合、Gileadの導入は大変な作業になる可能性があります。)

于 2012-04-11T11:57:09.580 に答える
0

ArrayListリストの代わりに使用して、再試行してください

この投稿を見てください。

于 2012-04-11T06:14:25.423 に答える
0

私も同様の問題に直面しました。UIから値を送信する私の場合、例外

「GWT エラー: 応答を逆シリアル化できませんでした」

示されていた。私が見つけたのは、コード ベース全体が .war ファイルに変換するために正しくパックされていないことでした。.warファイルの作成に Ant Build メソッドを使用していました。

後でEclipseにプラグインをインストールしましたが、うまくいきました。このリンクを使用してEclipseマーケットプレイスからプラグインをインストールしました

于 2018-09-10T07:41:37.093 に答える
0

私も同じ悩みを抱えていました。Serializable の代わりに com.google.gwt.user.client.rpc.IsSerializable を使用してみてください。それは私のために働いたので、あなたに役立つことを願っています:)

于 2012-04-11T06:28:04.297 に答える