質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

Q&A

解決済

1回答

3586閲覧

【Struts2】1つのs:form内で複数のs:submitボタンでActionを分けたい場合

RogerFederer

総合スコア19

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

1グッド

0クリップ

投稿2018/10/29 07:10

編集2018/10/29 07:11

JSP

1<s:form name="form"> 2 <s:submit value="検索" action="SearchAction"/> 3 <s:submit value="ログイン" action="LoginAction"/> 4 <s:submit value="一覧" action="ListAction"/> 5 <s:submit value="商品カゴ" action="CartAction"/> 6</s:form>

このように記述してボタンをクリックすると、

**Parameter [action:SearchAction] matches excluded pattern [^(action|method):.*]! **

というエラーがコンソールへ表示されてしまい、ボタンのあるページから画面遷移しません。
ブラウザ画面にエラー表示はされず、ボタンを押しても何の反応もない状態です。

"action="の部分を"onclick="に変えてJavaScriptで実装すると動作するのでAction側は正しく記述されています。

一つのs:form内でactionを分ける方法はこのようにs:submitタグ内でactionを記述するだけでOKという記事が散見されるのですが、
正常に動作させるにはこれだけではダメで、他に何か必要な要素があるのでしょうか?

A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Struts2のバージョンが古い(2.3.15以前)場合に動作する記述です。最新の2.3系ないしは2.5系両方とも動作しない属性であり、逆にこれを動作させる場合は action属性ではなく method属性に記載し、かつ DynamicMethodInvocationを有効にしなければなりません。

ただしこれはセキュリティ脆弱性を持つ機能なので、JavaScriptで切り替えるのが一番安全な方法です。

投稿2018/10/29 11:44

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RogerFederer

2018/10/30 01:12

もしかしたらそうなのでは・・・と思っていた点を突かれる回答を頂け、納得しました。ご回答ありがとうございます!
A-pZ

2018/10/31 06:54

d(・ω・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問