[Seasar-user:14266] Re: [SAStruts] EL 式でパブリックフィールドが使える件について

Kazuya Sugimoto [E-MAIL ADDRESS DELETED]
2008年 5月 19日 (月) 16:09:15 JST


杉本です。

ひがさん、ご返答ありがとうございます。

tutorialでも以下のコードを追加・変更することで再現しました。

1.tutorial.dto.AbcDtoを追加します。
>||
package tutorial.dto;

import java.io.Serializable;

public class AbcDto implements Serializable {

    private static final long serialVersionUID = 1L;

    public int testId;
    public String testName;
}
||<

2.tutorial.action.AddActionを変更します
>||
    ・・・
    public AbcDto abcDto;

    @Execute(validator = false)
    public String index() {
        abcDto = null; // これ重要です
        return "index.jsp";
    }
    ・・・
||<

3./WEB-INF/view/add/index.jspを編集する
>||
・・・
<html:errors/>
${f:h(abcDto.testId)}:
${f:h(abcDto.testName)}
<s:form action="/add">
・・・
||<

以上で、/sa-struts-tutorial/add/にアクセスすると、再現すると思います。

よろしくお願いします。

2008/05/19 13:30 Yasuo Higa <[E-MAIL ADDRESS DELETED]>:
> ひがです。
>
>> 杉本です。
>>
>> SAStrutsで、EL式でパブリックフィールドが使える件について確認ですが、
>>
>> 以下のようなクラスでhogeDtoをJSPから参照したときの話です。
>> public class AbcAction {
>>
>>    public HogeDto hogeDto;   // SMARTDeploy対象のDto
>>
>>    ・・・
>> }
>>
>> hogeDtoがnullの場合、hogeDtoのパブリックフィールドにアクセスするようなEL式を書くと
>> 以下のようにエラーになります。このとき、getterを用意するとエラーは起きません。
>> オペレータ"."を利用しましたが、・・・HogeDto"のオブジェクトにおいて "hogeId"に対応する値が見つかりません
>>
>> で、hogeDtoがnullでない場合は上記のようなエラーは発生しません。
>>
>> また、このhogeDtoのフィールド名を hogeHogeDtoのようにコンポーネント名と違う名前に
>> 変更すると、上記のようなエラーは発生しません。
>>
>> 環境はSAStruts1.0.2-RC2です。
>>
> 私のところで、HelloActionとHelloDtoを作ってやってみましたが
> 再現しませんでした。
> 念のため、AbcActionとHogeDtoもやってみましたが再現しませんでした。
>
> sa-struts-tutorialをベースに簡単な再現ケースがあると
> 調査できると思うので、よろしくお願いします。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



-- 
Kazuya Sugimoto
Microsoft MVP Development Platforms - XML
http://d.hatena.ne.jp/sugimotokazuya/


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