Main Contents

Apple Store(Japan)

BeanUtils の使い方

2008-04-21 追記

BeanUtils について, 下記にもうちょっとちゃんとしたエントリーを書きました.

BeanUtils の使い方

以下は古いエントリーです...


Jakarta commons-beanutils は、使いこなすと非常に便利です。
が、Web上に日本語の情報がちょっと乏しいかなと思うので、よく使う API を簡単にまとめてみました。

PropertyUtils
BeanUtils

この2種類のクラスがあります。
どちらも同じようなメソッドが並んでいて、どう違うんやーって感じですが、簡単にいうと、

PropertyUtils は、 Object を返す。
BeanUtils は、 String を返す。

と、覚えておくといいと思います。
つまり、 String を返す Bean を扱う場合は、 BeanUtils を使い、それ以外は、 PropertyUtils を使って Cast するというような使い方でいいと思います。

例。
Struts の Action クラスで、 ActionForm から 自作の Bean にプロパティをコピーするのに、非常に重宝します。

MyBean myBean = new MyBean();
PropertyUtils.copyProperties(myBean, actionForm);

これだけで、 ActionForm のプロパティを、別の Bean にコピーしてしまうことができます。

ActionForm のなかから、一つだけプロパティを変数に代入したい場合は、

Object object = PropertyUtils.getSimpleProperty(actionForm, "propertyName");

この1行だけで済んでしまいます。
propertyName を配列にしておいて、 for とかでループさせて、まとめて validate させたりできますね。
このとき、 プロパティの getter が String を返す場合は、

String string = BeanUtils.getSimpleProperty(actionForm, "propertyName");

と、 BeanUtils を使ってあげると、 Cast しなくてすみます。

逆に、 set する場合は、

PropertyUtils.setSimpleProperty(myBean, "propertyName", object);

としてあげるといいでしょう。

Action クラスの引数の ActionForm を、キャストせずに直接扱えるのが便利なところですね。

PropertyUtils#(set|get)Property を使うと、もっと複雑なことができますが、また機会があったら書きます。。
相変わらず、仕事が火を吹いていますので。。(汗

また、 BeanUtils のソースは、 とっても勉強になるので、難しくても読んでおくと
いいと思います。
英語のドキュメントを読むより、ソースを読んだ方が理解しやすいこともありますし。

TrackBacks

トラックバックURL:

Comments

Post a comment

(Think Different. では不適切なコメントを防止するため、コメントを掲載する前に管理者がコメントの内容を確認しています。コメントを初めて投稿する場合すぐに掲載されませんが、管理者が適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

コメントフォーム

Copyright © here.Creative Commons LicenseThis weblog is licensed under a Creative Commons License.