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>