2012-06-14 4 views
0

Я столкнулся с сценарием, когда я был неожиданным поведением только в браузере IE8. IE9 и браузеры Firefox работают нормально. Поведение пошло как:Значения форм теряются в IE8, но Firefox, IE9 работает

  1. Пользователь заселена формы
  2. С целью - пользователь оставляет обязательное поле гасится
  3. Пользователя нажал кнопку «Отправить» и браузер послал запрос POST
  4. Ожидаемого поведения - сообщение об ошибке сбрасывается вместе с данными, которые уже были предоставлены. Только обязательное поле должно быть пустым, так как мы не представили ничего на шаге 2. Но вместо этого я получаю сообщение об ошибке с предыдущими потерянными данными, то есть форма пустая.

И обратите внимание, что это происходит только в IE8. Какие-либо предложения?

ответ

0

Я сам отвечу на эти вопросы. Итак, вот что произошло в моем сценарии. Это была проблема с двойным щелчком. Но я только нажал кнопку один раз. Тогда как это произошло? Некоторый программист, который работал над этим проектом, занимался обработкой формы, где он подавал другую версию, используя JavaScript. Но как это работает в Firefox или IE9 +?

Я использовал Fiddler, чтобы углубиться в это - я заметил, что в браузере IE8 на сервер отправляются два запроса. Но IE9 и Firefox корректно обрабатывают этот сценарий (т.е. узнает о двойном щелчке) и отправляют только один запрос POST вместо 2.

применяемых технологий: Spring Framework 2.0, JSP, HTML, JavaScript

Почему данные потеряны имеет также для работы с Server - Spring изменяет атрибуты сеанса (в частности, это formObject, который временно удаляется и повторно добавляется) при обработке запросов. Когда есть еще один запрос, он проходит через другой конвейер (handleInvalidSubmit), который заканчивает создание нового объекта formObject и тем самым уничтожает старые данные.

Надеюсь, что это поможет другим :)

Смежные вопросы