[Seasar-user:12981] [SAStruts] urlPatternの優先順位

Kazuya Sugimoto [E-MAIL ADDRESS DELETED]
2008年 2月 21日 (木) 11:52:53 JST


杉本です。

SAStrutsの仕様の確認をさせてください。

Actionに以下のようなメソッドがあるとします。

@Execute(urlPattern="{xxId}", validator=false)
public String index() {
   // そもそもurlPattern="{index/{xxId}"にすべき?
   ・・・画面を表示するための処理
}

@Execute(validator=false)
public String showPage() {
   return index();  // urlPatternを使わずに画面を表示したいのでこんな感じに
}

@Execute(input="showPage")
public String delete() {
   ・・・削除処理
}

POSTでdeleteメソッドが呼ばれて、入力検査にかかった場合ですが、
上記のコードだとうまく動作しません。

showPageにフォワードしたくてもurlPatternの方が優先順位が高く、
アクション名.do?xxId=showPage&SAStruts.method=indexに
フォワードしてしまいます。

優先順位を@ExecuteにするとxxIdに文字列を許可した場合、@Executeが
付いたメソッド名をxxIdのパラメータ値に使えないので、正しい仕様だと思いますが、

POSTではindex以外のメソッドが呼び出せるのに、URL直接アクセスや
フォワードで表示しようとしたらindex以外のメソッドが呼び出せないで
少しはまってしまいました。

URL直接アクセス時とフォワードした場合はurlPatternが優先であるという
仕様で間違いないでしょうか?


-- 
Kazuya Sugimoto
Microsoft MVP Visual Developer - Solutions Architect
http://d.hatena.ne.jp/sugimotokazuya/


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