2012-02-18 12 views
2

GWTとRequestFactoryの新機能ですので、GWT RequestFactoryをRPC用に、ObjectifyをORM用に使用して簡単なテストアプリケーションをコーディングしています。GWT RequestFactory: "No type for token ..."を取得しています。例外

私は単純なPersonエンティティを持っており、すべてのcrud操作をうまく動作させることができました。私はPersonクラスに@Embeddedプロパティとしてアドレスを格納するための値型を追加しようとしました。これはGoogle Developerサイトに表示されているのと同じです。だから私は、私はこのように私のRequestFactoryコールにコードの行のカップルを追加することに終わる

など、ValueProxyを拡張する簡単なPOJO住所、AddressProxyを追加しました:

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です。トークンなしタイプ... Spefically 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); 
    } 
サーバー側では、私はUnexpectedExcpetionを取得します

リクエストのコンテキストからタイプを判断しようとしていると仮定していますが、私の最後に何が欠けているかを見分けるのに役立つものではありません。何が原因でしょうか?

答えて

1

のようなものを試してみてくださいGoogle Web Toolkit Googleグループでは、問題を解決しました。見積もりは次のとおりです。

Eclipseのアノテーション処理はほとんど使用できません。私は昨日何時間も戦って、生成されたDeobfuscatorBuilderをリフレッシュさせました。 IIRCで、Eclipseでプロジェクトをリフレッシュしてから再起動し、アノテーション処理を無効にし、.apt_generatedフォルダを削除してアノテーション処理を再度有効にしました。あなたのプロジェクトにMavenを使用できるのであれば、そこではもっとうまくいくはずです! (私はgwt-userプロジェクト自体に問題があったので、それは私の選択肢ではありませんでした)次回は、javac -proc:onlyを実行するビルドアクション(または何でも)を設定しようとします。 Eclipseの組み込みの(そして非常にバグの多い)APTに依存しています。

1

おそらく必要がないでしょうwith()

はトーマスBroyerからこのポストreq.save(person).with("address").fire();

+0

これはうまくいかず、とにかくそれが適用されないとは思わない。 with()は、他のエンティティタイプとの関係を確立するキー値が格納されているエンティティを取得するために使用されます(まだそのポイントには達していませんが、テストリストの次のポイント)。 –

+0

それは私の唯一のアイデアでした...私はこの 'with()'命令を見て多くの時間を失ったので、同じであったかもしれないと思いました。うまくいけば誰かがより良い答えを持っています! – foch

+0

私は前に言ったことを取り戻します。私はちょうど.with()[ここのリンク](http://code.google.com/p/listwidget/source/browse/trunk/src/main/java/com/turbomanage/)を使った永続メソッドの例に気づいた。 listwidget/client/mvp/EditListActivity.java)。しかし、私が以前言ったように、それは私の問題を解決しませんでした。 –