今では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 件のコメント:
コメントを投稿