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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Q&A

解決済

2回答

1987閲覧

strutsで共通的に前画面に遷移する方法について

syncrock

総合スコア209

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

0グッド

0クリップ

投稿2019/05/22 00:52

共通的なヘッダー用のjspがあり、各画面にはそれをincludeします。
そこで、ヘッダー用のjspにボタンがあり押下されると処理を行いたいのですが、
遷移はボタンが押された元々の画面を表示したいです。
(ex.画面Aで該当ボタンが押されたら処理後画面Aを表示、画面Bで該当ボタンが押されたら処理後画面Bを表示)

struts-configのforwardなどで特定の遷移先を指定しないといけないと思っていますが、
このように固定の指定先ではない場合、どのように記載すれば良いでしょうか。
もしくは、そのような指定もせずに元の画面に戻るような設定は不可能でしょうか。

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

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

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

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

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

guest

回答2

0

ベストアンサー

struts-configのforwardは複数指定できるので、戻る対象となる画面を複数記述します。
そして、A-pZさんが仰るように、どの画面から遷移してきたのかどうかをHttpSessionに記憶しておきます。
前画面に戻るときは、HttpSessionからどの画面から遷移してきたのかを取り出して、その値に応じたforward先を設定すれば戻れます。

投稿2019/06/13 00:15

deaf_tadashi

総合スコア200

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

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

syncrock

2019/06/21 01:55

回答ありがとうございます。 その考えで実装を検討してみようかと思います。
syncrock

2019/06/21 01:58

すいません、ふとおもったのですが。 記憶させて遷移させる場合、struts-configには全ての遷移先の定義が必要・・・ですよね?
deaf_tadashi

2019/06/21 02:07

それはstruts-configの仕様上、避けられないので許容するしかないですね… ただ、全パターン書かないといけないというのはなくて、不要な遷移先はあると思います。
syncrock

2019/06/21 05:19

遷移先を記憶し、ActionFowardを返すのではなく、 RedirectingActionForwardを使用してアクション+fowardの形でreturnすることにしました。 それであれば再度処理は流れますが(どちらにしてもリロードは必要でしたので)、そもそもある各アクションのstruts-configの遷移先に応じて遷移するようにしました。 ありがとうございます。
syncrock

2019/06/21 05:20

あ、遷移元ですね。 (具体的にはjavascriptでlocationから取得しました。)
guest

0

元画面の情報なり、URLをHttpSessionに格納しておくのが一番楽でしょう。

投稿2019/06/10 08:20

A-pZ

総合スコア12011

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

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

syncrock

2019/06/12 07:26

回答ありがとうございます。 strutsの遷移は基本的にstruts-configの記載に則った形で行われると思っていますが、 全画面情報を持っておけばstruts-config必要なく汎用的に遷移可能なのでしょうか。
退会済みユーザー

退会済みユーザー

2019/06/12 08:31

global-forwards
A-pZ

2019/06/12 22:42

質問の文に記載された「遷移はボタンが押された『元々』の画面を表示したい」のであれば、struts-configに指定された遷移先を覚えておかなければなりません。 押したボタンによって遷移先を切り替えるのであれば、ボタンにパラメータを追加してそのパラメータの値によってreturnする値を振り分けるか、Actionクラスをわけてしまう方法もあるでしょう。
syncrock

2019/06/21 01:53

asahina1979さん global-forwardsは共通の遷移先の設定ですよね?? 遷移先はどの画面で処理を行っても、処理を行った画面を表示したいんでちょっとちがいますかね。。
syncrock

2019/06/21 01:54

A-pZさん 記憶させる処理を1つ作らないと厳しそうですね。 有難うございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問