- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
[[BeanUtils - Commons>http://commons.apache.org/beanutils/]] はApache CommonsのライブラリでJavaBeansのプロパティをコピーする便利なメソッドなどが用意されたユーティリティです。
似たようなプロパティをもつ別のクラス、たとえばStrutsのActionFormを別のオブジェクトに移し替えるときや、DBのEntityからUI側のオブジェクトに載せ替えたいときなどに、
SrcBean src = ...
DestBean dest = new DestBean();
PropertyUtils.copyProperties(dest, src);
などとするだけで、同じ名称のプロパティを移し替えてくれたりします。
**ダウンロード [#aaf0899b]
[[Beanutils Downloads>http://commons.apache.org/downloads/download_beanutils.cgi]] よりダウンロードできます。また[[Project Dependencies>http://commons.apache.org/beanutils/dependencies.html]]を見ると
-commons-logging
-commons-collections
なども必要みたいですね。
**やってみる [#ecfb84fb]
SrcBeanのプロパティをDestBeanへ載せ替えることを考えてみます。
package src;
public class SrcBean {
private String message;
private boolean[] boolArray;
private List list;
private Map map;
.... Getter/Setterは削除
}
package dest;
public class DestBean {
private String message;
private boolean[] boolArray;
private List list;
private Map map;
.... Getter/Setterは削除
@Override
public String toString() {
return new ToStringBuilder(this).append("message", message).append(
"booleanArray", boolArray).append("list", list).append("map",
map).toString();
}
}
この例ではSrcBeanもDestBeanも同じプロパティを持っているとしています。
各プロパティの値を載せ替えるコードは以下の通りです。
public class Main {
public static void main(String[] args) throws IllegalAccessException,
InvocationTargetException, NoSuchMethodException {
SrcBean src = new SrcBean();
src.setMessage("ほげほげ");
boolean[] boolArray = new boolean[] { true, false, true };
src.setBoolArray(boolArray);
List<String> list = new ArrayList<String>();
list.add("first");
list.add("second");
src.setList(list);
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("chars", new char[] { 'a', 'b' });
src.setMap(map);
DestBean dest = new DestBean();
PropertyUtils.copyProperties(dest, src);
System.out.println(dest);
}
}
実行結果は以下の通り。
dest.DestBean@bb0d0d[
message=ほげほげ,
booleanArray={true,false,true},
list=[first, second],
map={
chars=[C@2c1e6b,
arr=[Ljava.lang.String;@811c88,
int=1,
bool=true,
name=json
}
] 整形してます
SrcBeanのプロパティがコピーされていることが確認できました。
***コンテンツ一覧 [#vd07dcbd]
#ls2
***関連リンク [#k8b55eb0]
----
この記事は
#vote(おもしろかった,そうでもない)
#vote(おもしろかった[1],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}