Я реализовал сайт в .jsp / JSTL / EL, который отлично работает. Однако в зависимости от браузера (!) Поведение кнопки «назад» может немного отличаться.
Я позаботился о том, чтобы не было двойной публикации (чтобы браузер не предупреждал пользователя о том, что он собирается опубликовать снова), но, очевидно, это приводит к другой проблеме: если я использую кнопку возврата из Chrome, то значение флажки не верны.
Вот сценарий, как я его понимаю:
- пользователь находится на странице / page1 , затем устанавливает флажок
- POST сделан, есть перенаправление HTTP
- a GET выполнен, страница / page2 отображается нормально, с установленным флажком, как и должно быть
- пользователь нажимает кнопку возврата
- пользователь возвращается к / page1 , как это было до того, как флажок был установлен (что в точности соответствует ожидаемому поведению кнопки возврата) , но флажок все еще проверено.
Если посмотреть на журнал сервера и журнал моего приложения, насколько я вижу, на веб-сервер абсолютно ничего не передается. Так что все происходит на стороне клиента.
Что происходит и как я могу это исправить? (без использования фреймворка вопрос не в этом)
РЕДАКТИРОВАТЬ Я, вероятно, должен дать немного больше информации ... Веб-приложение уже немного "наворочено" в том, что каждая обслуживаемая страница - в крошечном стиле, похожем на URL - соответствует состоянию , Все является «общедоступным»: любой может видеть чьи-либо страницы (но они могут быть приватными, с частными URL). В любом случае: если пользователь разделяет любую своей страницы, когда другой пользователь открывает страницу, она должна отображаться правильно, а флажки правильно инициализируются.
Все это говорит о том, что проблема не в серверной части, где «состояние» как-то не правильно: если пользователь A делится страницами ... / 1d2eof, то пользователь B открывает страницу ... / 1d2eof увидим правильную страницу.
Единственный раз, когда это запутывается, это когда пользователь нажимает кнопку "Назад". Помните, что в любой момент у меня есть полное состояние страницы, доступное на стороне сервера. Однако моя проблема заключается в том, что при использовании кнопки «назад» ничто не связывается с моим сервером, поэтому у меня нет возможности «исправить страницу» для пользователя, который использовал кнопку «назад».
Может быть, поможет двойное перенаправление!?