[Seasar-user:18006] Re: S2Struts1.3.1 へのバジョンアップによる Forward エラーについて

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2009年 7月 15日 (水) 18:09:56 JST


中村(taedium)です。

>   HogeAaaActionにひもづくhtmlを表示し、そのhtmlからsubmitにより、
> HogeAaaActionのhogeBaaメソッドを呼び出しています。
> その後、Forward先のHogeBbbAction.javaのexecuteが呼び出されていましたが、
> 下記のExceptionが発生し、正常に動作していない状態です。

s2struts-devのメールも参考にしていますが、
例外が発生するのは、
HogeBbbActionのexecuteメソッドが実行され、
レスポンスがクライアントに返るまでの間ということでいいですか?

もしそうだと、/hogeAaa/ccc.htmlというパスに対する
Actionの設定がみつからないというエラーに見えてしまうので
少し不思議です。

>   「[Seasar-user:15522] [S2Struts] S2Struts1.3.0-RC6からActionへのforwardでエラー」の件で、
> 1.3.0-RC6から1.3.1にバージョンアップし、web.xmlに設定を追加しました。
> 1.3.0-RC6と1.3.1の両方で同じ現象が発生しています。

フィルターがforward時も動作するようにweb.xmlを修正したということだと
思いますが、スタックトレースを見ると
S2StrutsFilterが一度しか登場していないので
修正が正しくないのかもしれません。

念のため移行上の注意点も参照してください。
http://www.seasar.org/wiki/index.php?S2StrutsUpdateOperationLog

>   デバッグ実行で、
> AbstractSelectActionのexecuteメソッドのローカル変数path
> を確認を試みたところ、AbstractSelectActionのexecuteが2度(再帰的?)呼ばれていました。
> 1度目に呼ばれた時には、path=/hogeAaa/bbbとなり、期待している文字列でしたが、
> 2度目に呼ばれた時には、path=/hogeAaaとなり、予期しない文字列でした。
> 予期しない文字列のために、Forward先が発見できないために例外が発生しているようです。

1度目、2度目とありますが、何を起点としての1度目、2度目でしょうか?
HogeAaaActionを呼び出すリクエストからならば
1度目はHogeAaaActionに対応する/hogeAaa/xxxxx、
2度目はForward先のHogeBbbActionに対応する/hogeAaa/bbb
になるのが期待通りの値だと思います。

また、予期しない値がどうして返されるのかデバッグ実行で
追ってもらえないでしょうか?

>   さらに、@StrutsActionForwardのcommand=executeの設定がないものでは、
> 正常にForwardできました。
> 違いは@StrutsActionのcommand=executeの指定のありなしに伴う、
>   @StrutsActionの指定くらいです。

私の環境で試してみましたが再現させられませんでした。
もし可能なら、
現象が再現するごく簡単なサンプルを送ってもらえれば
原因がつかめると思います。

-- 
Toshihiro Nakamura



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