0

IE8 ブラウザーでのみ予期しない動作がスローされるシナリオに遭遇しました。IE9 および Firefox ブラウザーは問題なく動作します。動作は次のようになりました。

  1. ユーザーがフォームに入力しました
  2. 意図的に - ユーザーが必須フィールドを空白のままにします
  3. ユーザーが「送信ボタン」をクリックすると、ブラウザが POST リクエストを送信しました
  4. 予期される動作 - 既に提供されたデータと共にエラー メッセージがスローされます。手順 2 で何も提供しなかったため、必須フィールドのみを空白のままにする必要があります。しかし、以前のデータが失われた、つまりフォームが空であるというエラー メッセージが表示されます。

これは IE8 でのみ発生することに注意してください。助言がありますか?

4

1 に答える 1

0

私は自分自身でこの質問に答えるつもりです。それで、これが私のシナリオで起こったことです。ダブルクリックの問題でした。しかし、私はボタンを一度だけクリックしました。では、それはどのように起こったのですか?このプロジェクトに取り組んでいたあるプログラマーは、JavaScript を使用して別の送信を行ったフォームの送信を処理していました。しかし、これは Firefox や IE9+ ではどのように機能したのでしょうか?

私はこれを深く掘り下げるために Fiddler を使用しました - IE8 ブラウザで 2 つのリクエストがサーバーに送信されることに気付きました。しかし、IE9 と Firefox はこのシナリオを正しく処理し (つまり、ダブルクリックについて学習します)、2 つではなく 1 つの POST 要求のみを送信します。

使用技術:Spring Framework 2.0、JSP、HTML、JavaScript

データが失われる理由は、サーバーにも関係しています。Spring は、リクエストの処理中にセッション属性を変更します (具体的には、一時的に削除されて再追加される formObject です)。同時に別のリクエストがあると、別のパイプライン (handleInvalidSubmit) を通過し、最終的に新しい formObject が作成され、古いデータが破棄されます。

これが他の人に役立つことを願っています:)

于 2012-06-14T14:56:15.123 に答える