[Seasar-user:21507] Re: 【SAStruts】セッションに設定したActionFormのページ単位の切り替えについて

hikaru kondo [E-MAIL ADDRESS DELETED]
2012年 11月 26日 (月) 19:55:24 JST


ぬまさわさん

失礼しました。
業務のソースなので本体はあげられませんが、イメージをメール下部に記載させて頂きます。

test1.jspを表示後、画面上のsubmitで、Test1ActionのtoTest2メソッドを呼び、リダイレクトしています。(最初のメールでは、Linkと記載していますが、redirectの形式に書き直しているパターンです)
そこで、Test2Actionのindexメソッド処理は無事終わるのですが、jspを読み込む際に、<html:checkbox>内にて、ActionFormを取りに行く際、Test1ActionのActionFormが取得されていました。
その為、Test1Formにない、"xxx"というフィールドを取得しようとして対象のプロパティに対するgetterメソッドがありませんと表示されているようです。

-----------------------------------------------------------------------------------
public class Test1Action {
    @ActionForm
    @Resource
    protected Test1Form test1Form

    @Execute(validate=false)
    public String index() {
        return "/test1.jsp";
    }
    @Execute(validate=false, redirect=true)
    public String toTest2() {
        return "/test2/";
    }
}

public class Test2Action {
    @ActionForm
    @Resource
    protected Test2Form test2Form

    @Execute(validate=false)
    public String index() {
        return "/test2.jsp";
    }
}

test2.jsp
....
<body>
    <s:form>
        <html:checkbox property="xxx"  value="true"/>
    <s:form>
</body>
-----------------------------------------------------------------------------------

以上、宜しくお願い致します。


2012/11/26 Hideaki Numasawa <hid.numasawa @ gmail.com>:
> ぬまさわです。
>
> public class Test1Action {
>     public TestForm testForm
>
>     public String index() {
>           return "/test2/index.html"
>     }
>
> }
>
> public class Test2Action {
>     public TestForm testForm
>
>     public String index() {
>           return "index.html"
>     }
>
> }
>
> で /test1 にアクセスして /test2/index.html を表示してるきがするので Action の最小コードあげてみたらどうですか?
>
> 2012年11月26日 10:45 hikaru kondo <kondohikaru4seaser @ gmail.com>:
>
>> 初めまして。近藤です。
>>
>> Dolteng-0.42.0 を用いてSAStruts + S2JDBC + Tilesで開発を行っております。
>> SAStruts は、1.0.4です。
>>
>> 以下問題と現象です。
>> 二つの画面があり、両方の画面共にアクションフォームをセッションに設定しています。
>> 現在その二つの画面間をLink(get送信)で移動しています。
>> その場合に、遷移先の画面を表示する際に、StrutsTagにて以下のエラーがおきます。
>> ActionFormWrapper  xxxのプロパティに対するgetterメソッドがありません。
>> 二回目以降(F5)は、エラーもなく表示されます。
>>
>> 調べたところ、CheckBoxTag:154行目にて、TagUtils.getInstance().lookup(pagecontext,
>> name, property, null)
>> としており、ここでエラーとなります。
>>
>> 実際は上記メソッドの内部で呼ばれる、TagUtils.lookup("org.apache.struts.taglib.html.BEAN")にて、ActionFormWrapper
>> を取得しており、ActionFormWrapperは、取得できているのですが、ActionFormWrapperがラッピングしている
>> Action,ActionFormは、今現在表示しようとしている画面のものではなく、前の画面のActionFormをみてしまっています。
>> そのため、目的のFieldがないことにより、上記エラーが出てしまっています。
>>
>> 2回目以降(F5)にエラーがでないのは、TagUtils.lookup("org.apache.struts.taglib.html.BEAN")で返されるActionFormWrapper
>> が正しい遷移先の画面の物を参照しているためです。
>> 正しくSessionに格納しているActionFormを切り替えるためにはどうしたらよいのでしょうか。
>>
>>
>> 以上、よろしくお願い致します。
>> _______________________________________________
>> Seasar-user mailing list
>> Seasar-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>


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