[STRUTS-6] ActionFormから値が取れる場合ととれない場合がある Created: 2006-08-09  Updated: 2006-11-22  Resolved: 2006-11-22

Status: Closed
Project: S2Struts
Component/s: S2Struts
Affects Version/s: 1.2.5
Fix Version/s: 1.2.7, 1.3.0-beta-3

Type: Bug Priority: Major
Reporter: kanagashi Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None


 Description   

画面の初期表示時を、<s2struts:init>タグで行っているのですが
最初の表示では

<m:write id="hogeId" value="${fooDto.hoge}" />

で表示できているところが、
strutsというかcommons-validatorのチェックで
再表示された時に、表示されなくなってしまいます。



 Comments   
Comment by kanagashi [ 2006-11-22 ]

STRUTS-13の対応でFormBeanであれば、必ずBeanValidatorFormにラップされるようになりました。

Comment by kanagashi [ 2006-08-09 ]

Strutsでは、POJO Formを受け取ったとき、BeanValidatorFormでラップして処理します。
<s2struts:init>タグの初期表示のときは、DtoそのままがRequestに設定されるので
<m:write id="hogeId" value="${fooDto.hoge}" />
のような処理が行えますが、
Actionを経由するとPOJO FormのfooDtoはBeanValidatorFormでラップされて
Requestに設定されるので
<m:write id="hogeId" value="${fooDto.instance.hoge}" />
のように処理しなければならなくなります。
#strutsカスタムタグはこの違いを考慮しているので問題ありません。

S2Strutsで対応しようと思っておりますが、時間がかかりそうです。

暫定の回避案ですが、下のようにすると期待した動作をすると思います。
<m:if test="${fooDto.instance != null}">
<m:exec script="${ request.setAttribute('fooDto', fooDto.instance); }"/>
</m:if>
<m:write value="${fooDto.hoge}" />

Generated at Wed Apr 09 01:19:55 JST 2025 using Jira 10.5.0#10050000-sha1:9d9d098bb7b67e8dba8da380ba9c3900d82ac3cf.