DWRのオブジェクト変換

いろんなBeanオブジェクトを作って、DWRで変換してみた

function call() {
    BeanContener.getBean(callback);
}

function callback(bean) {
    //ここにブレークポイントを設定する
}
  • firebugのブレークポイト機能を使って、受け取ったデータがどんな形になってるのか見てみる.
StringBean
  • String strという値を一つ持ったBeanクラスを変換

サーバ側

StringBean bean = new StringBean();
bean.setStr("hello");
  • クライアント側ではbean.strとして値を取り出す

Firebugで調べたデータ型

StringArrayBean Stringの配列を持たせる
  • BeanクラスにはString[] strArrayを持たせてみる

サーバ側

String[] strArray = {"hello","world","test"};

StringArrayBean bean = new StringArrayBean();
bean.setStrArray(strArray);
  • クライアント側ではbean.strArray[0],bean.strArray[1],bean.strArray[2]として値を取り出す

Firebugで調べたデータ型

StringMapBean Mapを持たせてみる
  • BeanクラスにMap strMapを持たせる
  • このときMapのキーはStringでなくてはいけない
    • Mapなんていう風にすると怒られる
    • 警告: --Javascript does not support non string keys. Converting 'java.lang.Integer' using toString()

サーバ側

Map<Integer, String> strMap = new HashMap<String, String>();
strMap.put("100", "hello");
strMap.put("200", "world");
strMap.put("300", "test");

StringMapBean bean = new StringMapBean();
this.bean.setStrMap(strMap);
  • JavaScriptではmapを配列として扱う
  • bean.strMap["100"],bean.strMap["300"],bean.strMap["200"]なんて風に取り出せる
  • for(i in bean.strMap)なんていう風にinで使うと便利そう

Firebugで調べたデータ型

追記 JavaScriptでStringMapBeanを作る

上であげたStringMapBeanをJavaScript側で作って送ってみる

StringMapBeanContener.setBean(StringMapBean)をJavaScriptで使う場合、こんな感じにStringMapBeanを表現する

StringMapBeanContener.setBean(
  {
    strMap:{"300":"一つ目の値","500":"二つ目の値","800":"三つ目の値"}
  }
);