0

gwt-platform で gwt を使用し、非同期ディスパッチでサーバー呼び出しを行っています。私が直面している問題は、使用しているアクションがシリアライズ可能としてマークされていないか、*.gwt.rpc ファイルに追加されていないことです。コードを実行すると、

com.google.gwt.user.client.rpc.SerializationException at com.google.gwt.user.client.rpc.impl.SerializerBase.getTypeHandler(SerializerBase.java:153) at com.google.gwt.user.client.rpc .impl.SerializerBase.serialize(SerializerBase.java:125) com.google.gwt.user.client.rpc.impl.ClientSerializationStreamWriter.serialize(ClientSerializationStreamWriter.java:183) com.google.gwt.user.client.rpc .impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126) com.gwtplatform.dispatch.shared.DispatchService_Proxy.execute(DispatchService_Proxy.java:33) com.gwtplatform.dispatch.client.DefaultDispatchAsync.serviceExecute(DefaultDispatchAsync.java:126) ) com.gwtplatform.dispatch.client.DefaultDispatchAsync.execute(DefaultDispatchAsync.java:... で

アクション:

public class FindCallsWithFilterAction extends UnsecuredActionImpl<FindCallsWithFilterResult> {

public FindCallsWithFilterAction() {

}

public Date getAfter() {
    return after;
}
public Date getBefore() {
    return before;
}
public Long getReferenceNumber() {
    return referenceNumber;
}
public String getUser() {
    return user;
}

public void setAfter(Date after) {
    this.after = after;
}
public void setBefore(Date before) {
    this.before = before;
}
public void setReferenceNumber(Long referenceNumber) {
    this.referenceNumber = referenceNumber;
}
public void setUser(String user) {
    this.user = user;
}

public boolean hasAfter(){
    return null != after;
}
public boolean hasBefore(){
    return null != before;
}
public boolean hasReferenceNumber(){
    return null != referenceNumber;
}
public boolean hasUser(){
    return null != user;
}


private Date after = null;
private Date before = null;
private Long referenceNumber = null;
private String user = null;

}

アクションには結果とハンドラーがあり、ハンドラーはサーバーモジュールにバインドされています。コードをデバッグしてシリアライゼーション マップを見ると、gwt がこのアクションを生成し、その結果がイベントではありませんが、これは isSerializable インターフェイスを実装しています (スーパー クラスでは、これで Serializable または isSerializable を使用しても機能しません)どちらかのレベル)。また、 *.gwt.rpc ファイルを調べると、クラスもそこにありません。私は立ち往生しており、誰かが何をすべきか、または何が間違っているかを知っていることを望んでいました.

更新:関連性があるかどうかはわかりませんが、サーバーで春を使用しています。

4

1 に答える 1

3

問題が見つかりました。Result オブジェクトで引数のないコンストラクターを忘れていました。また、Builder を使用してアクションを作成していましたが、何らかの理由で Builder パターンの使用を停止すると、シリアライゼーションの問題が発生し、すべてがスムーズに実行されました。

于 2012-08-23T12:41:42.617 に答える