質問: フレームワークStrutsを仕様しています。 JavaのアクションクラスにてSessionUtil.setAttributeにてセットしたformの情報を javascriptにてgetAttributeすることは可能でしょうか? --- 画面A、画面Bがあるとします。 画面Aから画面Bに遷移し、画面Bから戻るボタンで画面Aに遷移できる仕様です。 画面Bから戻るボタンで画面Aに遷移する際に、画面Aから遷移し表示したform(画面)の内容と1つでもformの値(テキストボックス・ラジオ・ドロップダウン)の内容が変更してあればポップアップを表示したいです。 はじめはjavascriptにてvalueとdefaultValuを使用して初期表示時の値と現在の値を比較できると思ったのですが、その項目の中にファイルアップロードがあり画像削除ボタン押下した際にはDBに登録されているファイル名とファイルパスをnullで更新する処理になっております。この際に画像削除がエラーなく成功した場合はアクションが走り自画面にフォアードします。アクションが走るということは画面を再読み込みするのでformの内容が上書きされていまし、初期表示のformの内容ではなくなって比較することができなくなってしまいます。(項目の入力チェックにてエラーメッセージを表示する際もアクションが走り画面が再読み込みされます) なので画面が再読み込みされても、画面Aから画面Bに遷移したformの状態をずっと保持しておくにはアクションクラスにて初回起動時のformの情報をセッションに詰めておき、javascriptにてそのセッションからformの情報を取得してそのformの現在のformの値を比較すれば良いのかなと思っていますが実現は可能なのでしょうか?
回答: なんらかの画面からAの入力項目を表示したときの値(1)と、A→Bのリクエスト時に受け取る入力項目の値(2)を比較するのが良いでしょう。 (1)の値をセッションに格納すれば比較はできるでしょう。 比較はAを表示するActionで行えますので、比較した結果をレスポンスに含め、ダイアログを表示するJavaScriptをJavaScript起動時に実行するなどで可能です。 画面遷移と入力項目・アクションの関連は、図に描くとスッキリしますよ。