[Seasar-user:17570] Re: SAStruts でNestedのiterateタグの使用

Yasuo Higa [E-MAIL ADDRESS DELETED]
2009年 6月 1日 (月) 16:20:20 JST


ひがです。
> 
> 西腋です
> 早速の対応、ありがとうございます。
> 
> 
> > よろしければ試していただけるでしょうか。
> > 個人的には、制御系のタグは、Strutsではなく、
> > JSTLの方を使ったほうがいいと思ってますが。
> 
> SP6で変更されたActionFormWrapper、WrapperUtil、S2ModuleConfigを適用してデ
> バッグをしてみました。
> 結果としては例外が発生しています。
> 
BeanWrapperが動いているようなので、古いjarが残っている気がします。

> org.seasar.framework.beans.PropertyNotFoundRuntimeException: [ESSR0065]クラ
> ス(test.dto.sample.TestDto41)のプロパティ(testDto42Array[0])が見つかりません
> 	at
> org.seasar.framework.beans.impl.BeanDescImpl.getPropertyDesc(BeanDescImpl.ja
> va:137)
> 	at org.seasar.struts.action.BeanWrapper.get(BeanWrapper.java:58)
> 	at
> org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUti
> lsBean.java:660)
> 	at
> org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean
> .java:715)
> 	at
> org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:29
> 0)
> 	at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:951)
> 	at
> org.apache.struts.taglib.TagUtils.computeParameters(TagUtils.java:188)
> 	at
> org.apache.struts.taglib.html.LinkTag.calculateURL(LinkTag.java:440)
> 	at
> org.apache.struts.taglib.html.LinkTag.doStartTag(LinkTag.java:341)
> 	at
> org.apache.struts.taglib.nested.html.NestedLinkTag.doStartTag(NestedLinkTag.
> java:74)
> 
> WrapperUtilの56行目にDynaBeanの派生であれば、
> ラッパーをせずにそのまま返してもらえるロジックを追加していただいたのですが
> デバッグで見てみますと、Form内の配列DTOの特定インデックスを取得する際の
> convertメソッドの引数は
> DynaBeanの実装でラッパーされておらず、素のDTOのクラスのままでしたのでした。
> ですので、BeanWrapperでラッパーされて返り、上記の例外が発生していました。
> 
> Form内の配列DTOの特定インデックスを取得する際、WrapperUtilのconvertメソッド
> が呼ばれる前に
> ActionFormWrapper#get(String, int) (今回の修正で実装を追加していただいたと
> ころ)
> の113行目で配列のプロパティの値を取得していますが
> この段階でDynaBeanのラッパーではなく、素のFormとの関係になっているためでし
> た。
> 
> まだ自分なりの対応策を思いつけない段階ですが
> 何か良い方法はあるでしょうか。
> よろしくお願いいたします。
> 
> 
> > HOT deployでBeanUtilsを使うと、
> > PropertyDescriptorがどんどんキャッシュされて
> > メモリリークを起こしてしまうので。
> 
> なるほど。普段からCool Deployのみを使っていましたので
> まったく気付いていませんでした。
> 
> 
> 
> > -----Original Message-----
> > From: [E-MAIL ADDRESS DELETED]
> > [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Yasuo Higa
> > Sent: Monday, June 01, 2009 1:57 PM
> > To: [E-MAIL ADDRESS DELETED]
> > Subject: [Seasar-user:17567] Re: SAStruts でNestedのiterateタグの使用
> >
> > ひがです。
> > >
> > > 西腋と申します。
> > >
> > > SAStruts 1.0.4-sp5 を使用してWebアプリケーションを作成した際
> > > FromにDTOをListで複数件持てるようにし、複数件の入力を行えるようにしてま
> す。
> > > この際、JSPにStrutsのNestedのiterateタグなどを利用すると例外が発生しま
> す。
> > >
> > > org.seasar.struts.action.ActionFormWrapper
> > > org.seasar.struts.action.WrapperUtil
> > > の2つのソースを修正すると、正常に画面が表示され、複数件の入力も可能でし
> た。
> > >
> > trunkの方を修正しました。
> > https://www.seasar.org/issues/browse/SASTRUTS-118
> >
> > よろしければ試していただけるでしょうか。
> > 個人的には、制御系のタグは、Strutsではなく、
> > JSTLの方を使ったほうがいいと思ってますが。
> >
> > HOT deployでBeanUtilsを使うと、
> > PropertyDescriptorがどんどんキャッシュされて
> > メモリリークを起こしてしまうので。
> >
> > 今回のバージョンからその対策を入れました。
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 


Seasar-user メーリングリストの案内