Struts2 でフォームで複数ボタンを使う際、ボタンでアクションを切り替えるには
提供: tknotebook
メインページ>コンピュータの部屋#Java>Struts2 Tips
struts2 でひとつのフォームで複数のサブミットボタンを使う場合、
s:submit タグの action タグを使うのが定番でしたが、セキュリティ強化のため、
struts 2.3.15.3 以降、既定ではこの手法は使えなくなりました。
もちろん、struts2 のシステムの定数
struts.mapper.action.prefix.enabled
をtrueに変更すれば使えるのですが、セキュリティ上使わない方が無難でしょう。
以下のようにして、Javascriptでactionを切り替えることをお勧めします。
Javascript
<script type="text/javascript"> function submitForm(action) { document.forms[0].action = action; document.forms[0].submit(); return false; } </script>
サブミットボタンは JSP では以下のように記述します。以下は okアクションを呼び出すボタンの記述です。
<s:url var="ok_url" action="ok" /> <button type="button" onclick="return submitForm('${ok_url}')">ボタンのキャプション</button>