[Seasar-user:19191] Re: [SAStruts] ネストしたオブジェクトにインデックスでアクセスできない

[E-MAIL ADDRESS DELETED]
2010年 1月 25日 (月) 14:10:07 JST


星です。

> BeanWrapper系ならdto.listの型がリストならリストのラッパーを
> かえるから大丈夫な気がしますけど。

nestedでアクセスした場合、ListWrapperが正しく処理されません。

form.dto.list[0].propertyにアクセスする場合は
FormWrapper→BeanWrapper→ListWrapper
と順繰りアクセスされるのを期待しますが、BeanWrapperがListWrapperへうまくアクセスしてくれない状態です。

というのは、BeanWrapperのgetメソッドに渡されるキーが "list" ではなく "list[0]"となるためです。
BeanWrapperはフィールドに定義されたプロパティ名のみを持っているため
"list[0]"とアクセスしてもプロパティが見つからないというエラーになっています。

nested:iterateでproperty="dto.list"としておいて、一旦ListWrapperを取り出しておいても
子タグでnested:text property="property"とすると結局はdto.list[x].propertyというアクセスをするため
上記同様のエラーとなっていました。


2010年1月25日10:07 Yasuo Higa <[E-MAIL ADDRESS DELETED]>:
> ひがです。
>
>> 星です。
>>
>> ひがさん、ご回答ありがとうございます。
>>
>> > Strutsのタグではなく、生のHTMLのタグとELを組み合わせるのは
>> > どうでしょうか。
>> >
>> > <input type="text" name="dto.list[0].property" value="${dto.list[0].property}"/>
>>
>> こちらの方法も検討しましたがiterateタグの中で利用するとコード量が増えてしまうのと
>> nestedタグの恩恵を受けられなくなってしまうので悩む所です。
>> <input type="text" name="dto.list[${index}].property"
>> value="${dto.list[index].property}"/>
>>
>> Wrapper系クラスかWrapperUtilの拡張ができるようになると自前で対応できると思うのですが、
>> RequestProcessorから順繰り入れ替えていくくらいしか
>> それらクラスを入れ替える方法が思いつきませんでした。
>>
>> 通常のStrutsではできる事なので何かJSP側が従来方式で対応可能な方法はありませんでしょうか。
>>
> BeanWrapper系ならdto.listの型がリストならリストのラッパーを
> かえるから大丈夫な気がしますけど。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



-- 
--
[E-MAIL ADDRESS DELETED]


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