2016-10-08 6 views
0

を使用した後、AutobeanがAutobanを返します。gwt channel apiを持つオブジェクトをクライアントに送信し、Autobeanを使用してそれらのオブジェクトをエンコードおよびデコードします。すべて正常に動作し、クライアント上で有効なjson文字列を受け取って、そのjson文字列をAutoBeanにデコードして再び戻すことができます。 autobean.as()はautoban自体と異なるものを返しません。私のgwtプロジェクトで、()の

IContactDtoとContactDtoには、ゲッターとセッターだけが含まれています。そしてこれは、私は、サーバー側のコードは、これは私が使用したコードであるクライアント側のコードに

DtoFactory dtoFactory = AutoBeanFactorySource.create(DtoFactory.class); 
AutoBean<IContactDto> iContactDto = dtoFactory.contactDto(contactDto); 
String sJson = AutoBeanCodex.encode(autoBean).getPayload(); 
// sending this json to the client 

public interface DtoFactory extends AutoBeanFactory{ AutoBean<IContactDto> contactDto(IContactDto contactDto); } 

AutoBeanFactory

を書いたfacboryです有効なjson文字列をデコードするために

// sJson string looks like {"id":"6473924464345088", "lastUpdate":"1475914369346", "fullName":"testName1","givenName":"testName2"} 

DtoFactory factory = GWT.create(DtoFactory.class); 
AutoBean<IContactDto> autoBean = AutoBeanCodex.decode(factory, IContactDto.class, sJson); // debugger: IContactDtoAutoBean_1_g$    
IContactDto iDto = autoBean.as(); // debugger still shows IContactDtoAutoBean$1_1_g$ 

私は実際にこのオブジェクトのgetterとsetterを使用できますが、このオブジェクトを処理しようとするとすぐにタイプシグネチャに問題が発生します。

どのようにオブジェクトを取得することができますか私は再びエンコードされますか? 「もしあれば、根本的なラップされたオブジェクトに委譲しますTインタフェースのプロキシ実装」

+2

"タイプシグネチャに問題があります"とはどういう意味ですか?あなたは何をしたいのですか?私には、あなたが「ゲッターとセッターを実際に使うことができる」なら、すべてが意図どおりに機能しています。 –

+0

これは、IContactDtoを認識するメソッドにAutobeanオブジェクトを渡そうとしたときに発生するエラーです。オートバイを元のクラスにキャストすることは、単に不可能です。私はAutoban getterの値を取ってIContacDtoオブジェクトを再構築することができますが、これは実際には厄介であり、うまくいくとは思えません。ドキュメントは、as()メソッドが元のクラスを返すことを示しているので、なぜそれがdoentなのだろうかと思います。 – richard

+0

あなたの期待は間違っています。私は文書をチェックしますが、あなたが期待するように動作していないと保証することができます。 –

答えて

0

AutoBean#as()は(ソース:javadocを返し、それがラップされたオブジェクト自体を返すことはありません。直接実際

また、JSONから逆シリアル化するとき、何のラップされたオブジェクトがありません、新しいautobeanは「ゼロから」作成し、JSONで満たされている(これは、解析されたJSONからラップSplittable:超軽量、ちょうどJSオブジェクトの周りに薄い型のないラッパー - またはorg.json.JSONObjectがブラウザにない場合)

関連する問題