6

GWT を使用して Bean を文字列にシリアル化する最も簡単な方法は何ですか? 私はGWT.create()呼び出しを使用しないことを好みます。

4

6 に答える 6

4

免責事項: URL で Bean をシリアライズすることは、GWT にとってあまり良い考えではありません。URL にデータを配置する必要がある場合は、できるだけ少なくし、ページの状態を復元するために必要なものだけにする必要があることを学びました。Gmail が履歴トークンをどのように使用しているかを見ると、それが非常に最小限であることがわかります。

その免責事項を邪魔しないで:

私が取り組んだ GWT プロジェクトでは、Bean の値を区切り記号で区切って単純に書き出しました。値を読み戻すときは、String.split() メソッドを使用して配列を取得しました。その配列を使用して、値を正しい Bean プロパティに割り当てます。コード内:

public class Sample {

    private int a;
    private boolean b;
    private String c;
    //getters and setters for fields not shown

    public String toHistoryToken(){
        return a+"/"+b+"/"+c;
    }
    public void fromHistoryToken(String token){
        String[] values=token.split("/");
        a=Integer.parseInt(values[0]);
        b=Boolean.parseBoolean(values[1]);
        c=values[2];
    }
}

より複雑なシナリオでは、より複雑なことをしなければならない場合があります。たとえば、ネストされたオブジェクトの場合、値を子オブジェクトに渡すコードを記述する必要があります。

また、使用する値に区切り記号が含まれていないことを確認する必要があることに注意してください。したがって、文字列に「/」が含まれている可能性があることがわかっている場合は、それらの replace() 操作を実行して、ネストされた区切り文字をエスケープする必要があります。

于 2009-04-19T16:11:31.933 に答える
1

あなたが最終的に達成しようとしていることを理解しているかどうかはわかりません。

本当に文字列をやり取りしたいだけなら、何もする必要はありません。通常の GWT RPC メカニズムを使用して無料で取得できます。を返すメソッドをjava.lang.String作成し、付随する実装と Async インターフェイスを作成するだけで完了です。

一方、本当に Bean を送信したい場合は、引数なしのコンストラクターとSerializableorを実装していることを確認してIsSerializableください。

于 2009-04-13T14:55:34.277 に答える
1

私が見つけた最も近いものはこれでした:

HTML ホスト ページに埋め込まれたオブジェクトを使用した GWT の起動の高速化

于 2009-04-20T05:24:42.590 に答える
0

最終的に、GWTはJavaScriptで実行されます(Javaで記述されている場合でも)。その意味で、「Java Beans」はクライアントで簡単に見つけることができるものではありませんが、サーバー(Javaの場合)では正常に機能します。

Beanが実際には単なるメソッドレスオブジェクトであることに同意する場合、Beanを使用する目的は、データを移動することです。JavaScriptでネイティブに、JSONはデータの非常に柔軟なコンテナーとしても機能します。サーバー側では、Beanの配列をBeanUtils(および少しのトラバーサル)を使用してJSONに変換できます。JSONはGWTで文字列としてシリアル化でき、GWTにはJSONをクライアントのJavaScriptオブジェクトに変換するパーサーがあります。

これを行うのはおそらく最も簡単な方法ではありませんが、機能させると非常に柔軟になります。

于 2009-04-17T20:10:08.663 に答える
0

物事を複雑にするGWTのニュアンスがいくつかあるかもしれませんが、一般的には次のようなものです:

  • JAXBXStreamなどの XML データ バインディング/マッピング ライブラリでこれを実行できます。
  • JSON を使用すると、Jacksonのようなライブラリは、JAXB と同様に柔軟なフル Bean バインディングを行うことができますが、構成がさらに少なくて済みます (それが重要な場合はより高速です)。

動作するはずです。

于 2009-04-15T20:49:24.237 に答える
0

多分これはあなたが探しているものですか?

Json <-> GWT で動作する Java シリアライゼーション

拡張版:

Json-lib ライブラリの使用:

http://json-lib.sourceforge.net/

これを行うことができます(Beanからjson文字列に直接移動します):

http://json-lib.sourceforge.net/snippets.html#Creating_a_JSONObject_from_a_JavaBean

于 2009-04-13T14:44:30.603 に答える