[Seasar-user:5269] [S2Dxo] ネストしたBeanの変換で例外発生
KOMORI Yusuke
[E-MAIL ADDRESS DELETED]
2006年 11月 25日 (土) 06:18:40 JST
小林 (koichik) さん
小森です。
S2Dxo を使ってますが、以下のような現象が発生して困っています。
1.以下のように Employee クラスを定義します
■Employeeクラス
- String ename
- Employee manager
■EmployeeDtoクラス
- String ename
- String mname
2.以下のように EmployeeDxo を定義します。
@ConversionRule("mname : manager.ename")
EmployeeDto convert(Employee employee)
これで、EmployeeDto の mname には、Employee が持っている manager の
ename が設定されますよね。
通常はこれでうまくいくのですが、manager が null の場合、以下のようなOGNL
の例外が発生してしまいます。
org.seasar.framework.exception.OgnlRuntimeException: [ESSR0073]OGNLで例外が発生しました。理由はsource is null for getProperty(null, "ename")
at org.seasar.framework.util.OgnlUtil.getValue(OgnlUtil.java:59)
at org.seasar.framework.util.OgnlUtil.getValue(OgnlUtil.java:42)
at org.seasar.framework.util.OgnlUtil.getValue(OgnlUtil.java:37)
at org.seasar.extension.dxo.converter.impl.ConversionContextImpl.<init>(ConversionContextImpl.java:96)
at org.seasar.extension.dxo.command.impl.BeanToBeanDxoCommand.createContext(BeanToBeanDxoCommand.java:70)
at org.seasar.extension.dxo.command.impl.BeanToBeanDxoCommand.convertScalar(BeanToBeanDxoCommand.java:56)
at org.seasar.extension.dxo.command.impl.AbstractDxoCommand$ScalarConversionHelper.convert(AbstractDxoCommand.java:91)
at org.seasar.extension.dxo.command.impl.AbstractDxoCommand.execute(AbstractDxoCommand.java:40)
at org.seasar.extension.dxo.DxoInterceptor.invoke(DxoInterceptor.java:49)
manager が null の場合もあり得るので、この場合は mname にも null を設
定するというようにできないでしょうか。
ConversionContextImpl あたりで対処すれば良さそうなんですが、Ognl の使
い方が分かっていないので、あきらめました・・・
念のため、問題を再現したサンプルプロジェクトを添付しておきます。
すみませんが、手の空いたときに見ていただけると助かります。
----------------------------------------------
小森 裕介 / Yusuke Komori
E-Mail : [E-MAIL ADDRESS DELETED]
Blog : http://d.hatena.ne.jp/y-komori/
URL : http://www.littleforest.jp/
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: S2DxoTest.zip
型: application/x-zip-compressed
サイズ: 10956 バイト
説明: 無し
URL: http://ml.seasar.org/archives/seasar-user/attachments/20061125/744d36c2/attachment-0004.bin
Seasar-user メーリングリストの案内