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

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

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

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

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

18746閲覧

ブラウザの戻るボタンで入力フォームへ戻った際の挙動について

emeraldworm

総合スコア16

Java

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

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2016/11/19 06:51

編集2016/11/20 06:52

Java、SpringBoot、Thymeleafを使用して簡単な入力フォームのWebアプリを
制作しているのですが、入力フォームから次画面へ飛んだあと、ブラウザの戻るを押すと
「Webページの有効期限が切れています」 という警告が出てしまいます。
ブラウザバックで戻った際にこの警告を出さずに入力フォームへ戻り、かつ
フォームに入力した内容が保持されているようにするにはどうすればよいでしょうか?
自分でやってみたこととしては、method="get"にしてみましたが、変化ありませんでした。

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

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

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

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

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

A-pZ

2016/11/21 07:35

送信しているHTMLのコードがあると回答がつきやすいかと思います
退会済みユーザー

退会済みユーザー

2016/11/21 23:54

キャッシュの設定であることは間違いがないかと。
guest

回答1

0

ベストアンサー

あえてそういう挙動にしてあるのだと思います。

理由

フォームの入力、送信が終わって次の画面に遷移し、特にエラーも表示されていないときを想像して下さい。これは「ユーザが入力したものをサーバが確かに受け取って、処理も成功した」というときです。ですから、ユーザが先ほどフォームに入力した情報を取っておいて再度送信できるようにする必要は、本来はないはずです。

ところが、[戻る] ボタンで戻ればブラウザキャッシュに残っている入力がフォームに表示されるのだとしてみます。すると、再度同じものを送れます。極端な場合には、[戻る] を押さなくても [リロード] ボタンを押すだけで、最初のユーザが入力した内容を何度でも送信できてしまいます。そもそもこれは、ユーザが入力したある情報が、その人が席を立った後でもブラウザに残っていて他人に閲覧できてしまう、ということです (たとえば、クレジットカード番号を入力していたら?)。

こういった挙動は、望ましいものではありません。

そういうわけで、フレームワークなどでは通常、フォーム入力をブラウザにキャッシュさせないよう対策しています (完璧ではありませんが)。ところが、昔のウェブアプリ等ではこのような対策がされないことが多かったので、[戻る] ボタンで戻れました。そのため、「やり直したければ [戻る] ボタンで戻ればいい」というバッドノウハウが世の中に広まってしまいました。こういう事情があるため、「[戻る] を押したのに戻れない」というユーザからの苦情が、開発者に寄せられるのです。

対処

ではどうすればいいかと言うと、アプリなどでユーザに [戻る] ボタンを使わせないような造りにすればいいです。

たとえば、フォーム画面を2ステップにしてつぎのようにします。

  1. 最初の画面ではフォームに入力をさせ、「確認」のsubmitボタンで後の画面2.へ進みます。
  2. 後の画面では入力内容を表示してユーザに確認させる (編集はできない) ようにします。「確定」と「修正」の2つのsubmitボタンを用意します。
    ・「確定」が押されたら入力は確定です。
    ・「修正」が押されたら最初の1.の画面に遷移して再びフォームを表示しますが、入力内容を入れた状態で表示します。

このようになっていれば、もはやブラウザの [戻る] ボタンを使う必要はありません。しかも、入力内容を確認する画面を設けることで、[戻る] ボタンを使うよりも使いやすくなります。

ちなみに、フレームワーク等の中には「パンくずリスト」の機能を提供するものがありますが、これも同様に、ユーザに [戻る] ボタンを使わせない対策の一環だと言えます。

投稿2016/11/22 06:56

ikedas

総合スコア4333

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

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

emeraldworm

2016/11/23 03:42

ご回答ありがとうございました。 フォーム画面の構成を作り直してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問