GWT RequestFactory:「トークンのタイプなし…」例外を取得する
-
27-10-2019 - |
質問
私はGWTとRequestFactoryを初めて使用しているので、RPCのGWT RequestFactoryを使用してORMのObjectifyを使用して簡単なテストアプリをコーディングしています。
私にはシンプルな人エンティティがあり、すべてのCRUD操作を正常に機能させることができました。 Google Developerサイトに表示されているように、個人のクラスに@Embeddedプロパティとしてアドレスを保存するための値タイプを追加してみたかったのです。そこで、単純なPOJOアドレス、valueProxyを拡張するアドレスプロキシなどを追加しました。
このような要求ファクトリーコールにコードを2行追加することになります。
PersonRequest req = rf.personRequest();
AddressProxy address = req.create(AddressProxy.class); // Added this
address.setCity(city); // this
PersonProxy person = req.create(PersonProxy.class);
person.setName("Joe");
person.setPhone("215-555-1212");
person.setAddress(address); // and this.
req.save(person).fire();
そのため、すべてが完全にコンパイルされ、コードを介してすべてがクライアント側でA-OKです。サーバー側では、予期しないexcpetionを取得します:トークンのタイプはありません...
特に、この方法でcom.google.web.bindery.requestfactory.server.resolverservicelayerの下でこの方法に巻き込まれているようです。
@Override
public Class<? extends BaseProxy> resolveClass(String typeToken) {
String deobfuscated = deobfuscator.getTypeFromToken(typeToken);
if (deobfuscated == null) {
die(null, "No type for token %s", typeToken);
}
リクエストコンテキストからタイプを決定しようとしていると思いますが、私の側で何が欠けているかを見るのに役立ちません。何が原因ですか?
解決 2
トーマス・ブロイヤーからのこの投稿 Google Webツールキット Google Groupはこの問題を解決しました。これが引用です:
日食の注釈処理はかろうじて使用できません。私は昨日何時間も戦い、生成されたdeobfuscatorbuilderをリフレッシュさせました。 IIRC、Eclipseでプロジェクトを更新してから再起動してから、Annotation Processionを無効にし、.apt_Generatedフォルダーを削除し、再利用可能な注釈処理を削除しました。あなたがあなたのプロジェクトにMavenを使用できるなら、私はそれがそこではるかにうまく機能するに違いない! (GWTユーザープロジェクト自体で問題があったので、それは私にとって選択肢ではありませんでした)次回は、「Javac -Proc:Only」を実行するためにビルドアクション(または何でも)を設定してみてください。 Eclipseの組み込み(そしてひどくバグ)が適切に依存しています。
他のヒント
あなたはおそらく必要なものを見逃しています with()
.
ようなものを試してみてください req.save(person).with("address").fire();