[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 メーリングリストの案内