0

GWT アプリケーションには RPC インターフェイスがあります。一部のメソッドは正常に動作します (つまりRemoeServiceServlet、正常に構成されています) が、別のメソッドを呼び出そうとすると、常にメソッドで失敗しますonFailure()。Ajax呼び出しも発生しません(FireBugを使用して確認できます。サーバー側のメソッド呼び出しでも発生しません)が、このサービスの別のメソッドもAjax呼び出しを実行します。

を使用してエラーをログに記録しようとするe.getMessage()と、「未定義」メッセージが表示されます。try-catchまた、エラーメッセージなしを使用してRPC呼び出しコードをラップしようとしました。

この問題は GWT-RPC シリアライゼーションに関連していますか?

編集: Opera Dragonfly は、生成された JavaScript (PRETTY モードでコンパイル) 内の次のメソッドでエラーを示しました:

function $check(this$static, typeSignature){ if (isNull($get_3(this$static.methodMapNative, typeSignature))) { Unhandled Object: undefined throw new SerializationException_1(typeSignature); } }

エラーメッセージあり

未処理オブジェクト: 未定義

4

1 に答える 1

1

JavaシリアライゼーションはGWTシリアライゼーションと同じではないことに注意してください。

RPC を使用している場合、シリアライゼーション エラーに関する意味のあるエラー メッセージが表示されないことがよくあります。

  • 0-ary コンストラクターが必要です
  • final フィールドは本質的に一時的なものです (つまり、シリアル化するクラスでは final フィールドを使用しないでください)。
  • コレクション (List や Set など) には、@gwt.typeArgs で注釈を付ける必要があります。@gwt.typeArgs は JavaDoc アノテーションであるため、JavaDoc コメントでラップする必要があります。例: /** @gwt.typeArgs */

詳細については、 GWT シリアル化を参照してください。

もう 1 つ試すこと: eclipse-plugin から GWT を実行すると、eclipse プロジェクト内にフォルダーが作成されます (gwt-unitCache という名前だと思います)。私自身の GWT プロジェクトが異常をきたし、奇妙な例外を出力することがあります。この問題は、フォルダーを削除してプロジェクトを再度実行することで解決できます。

于 2012-11-21T12:11:39.973 に答える