2011/04/16

Struts2 Convention Pluginとsubmitタグ

環境: struts2-2.2.2.1

今ではdeprecatedなCodebehind Pluginではできたのだが、Struts2 Convention Pluginはsubmitタグのmethod attributeを見てくれない。

Actionクラスのexecute()以外に実行したいメソッドがある場合は、@Actionで指定するポリシーのようだ。リクエストパラメータでメソッドの区別をするのではなく、URLで区別するということだ。
理由は知らないけど、Codebehindではsubmitの値次第で、意図しないpublicメソッドが呼べてしまうしね。
@Actionならば、指定したメソッドだけが呼び出し対象になる。

それでConvention Pluginでは次のとおり。
submitのactionを指定して、その値を@Actionの引数に対応させる。
submitが1つのときはformのactionに指定しても良い。
ただし複数のsubmitが存在する場合は、submitのactionを使ってそれぞれ異なるURLを指定する。

.jsp

<s:form> 
<s:submit action="hoge" value="Hoge">
<s:form>


Action Class

@Action("hoge") 
public String hoge() {
...
}

0 件のコメント:

コメントを投稿