「Struts2 でフォームで複数ボタンを使う際、ボタンでアクションを切り替えるには」の版間の差分

提供: tknotebook
移動: 案内検索
 
 
4行: 4行:
  
 
struts2 でひとつのフォームで複数のサブミットボタンを使う場合、
 
struts2 でひとつのフォームで複数のサブミットボタンを使う場合、
s:submit タグの action タグを使うのが定番でしたが、セキュリティ強化のため、
+
s:submit タグの '''action タグ'''を使うのが定番でしたが、
struts 2.3.15.3 以降、既定ではこの手法は使えなくなりました。
+
'''セキュリティ強化のため、struts 2.3.15.3 以降、既定ではこの手法は使えなくなりました。'''
  
 
もちろん、struts2 のシステムの定数
 
もちろん、struts2 のシステムの定数

2016年12月21日 (水) 12:23時点における最新版

メインページ>コンピュータの部屋#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>