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

YASUO HIGA [E-MAIL ADDRESS DELETED]
2012年 11月 27日 (火) 10:13:09 JST


ひがです。

action属性を指定しなかったときの動きは、Strutsの動きそのものじゃないかと思います。
動いている方法が正だということで。
________________________________________
差出人: seasar-user-bounces @ ml.seasar.org [seasar-user-bounces @ ml.seasar.org] が次の人の代理で送信しました: hikaru kondo [kondohikaru4seaser @ gmail.com]
送信日時: 2012年11月26日 19:25
宛先: seasar-user @ ml.seasar.org
件名: [Seasar-user:21506] Re:     【SAStruts】セッションに設定したActionFormのページ単位の切り替えについて

ひがさん

redirect及び、env.txtにproductを指定してやってみましたが同じ結果になりました。

で、途中吐きだされたHMLTソースを見ていて気付いたのですがSAStrutsタグの、<s:form>の指定が問題だったようです。
<s:form>だけで、action属性を指定していなかった場合、アクションフォームをセッションに持つ画面間の遷移の場合、遷移前のActionFormが吐かれたHTMLソースのformタグの属性に指定されていました。
<s:form>にてaction属性指定がない場合のアクションフォーム解決の方法に、問題があるのかもしれません。(action属性が任意になっているため、指定しないのも問題ないという認識の上)

また、<s:form>のアクション属性に、””(空文字)を指定した場合は、正しいActionFormが選択されていました。(これもよくわからない。。。)

上記を受けて、今の対応としては<s:form>にaction属性を必ず指定するように対応しますが、これが本当に正しい対応かといわれると何とも言えないので、アドバイスをいただきたいと思います。
また、私の認識では、<s:form>はaction指定をしなくても正しいActionFormが選択されるという認識でしたが、これは間違っていますでしょうか?

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

2012/11/26 YASUO HIGA <higa @ isid.co.jp>:
> ひがです。
>
> Formをセッションにおいてあるなら、redirectで遷移するとどうなるでしょうか。
> また、HOT deployは関係ない気がしますが、使っているならやめるとどうなりますか。
> ________________________________________
> 差出人: seasar-user-bounces @ ml.seasar.org [seasar-user-bounces @ ml.seasar.org]
> が次の人の代理で送信しました: hikaru kondo [kondohikaru4seaser @ gmail.com]
> 送信日時: 2012年11月26日 10:45
> 宛先: seasar-user @ ml.seasar.org
> 件名: [Seasar-user:21503] 【SAStruts】セッションに設定したActionFormのページ単位の切り替えについて
>
> 初めまして。近藤です。
>
> 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 mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
_______________________________________________
Seasar-user mailing list
Seasar-user @ ml.seasar.org
https://ml.seasar.org/mailman/listinfo/seasar-user


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