Это хорошо известная проблема для каждого веб-разработчика. Насколько я пытался найти хорошее решение этой проблемы - его не было (или, по крайней мере, я не смог его найти).
Предположим следующее:
Пользователь не ведет себя так, как он ожидал. Фактический проект, в котором я работаю, использует навигацию внутри веб-портала. Но если пользователь использует кнопку «Назад» в браузере, все это становится угрозой [?], И результат не всегда был предсказуемым.
Мы использовали структуру Struts и сохранили обратный URL-адрес в формах - в некоторых местах, где нам требовался обратный URL-адрес - это было визуализировано из обратного URL-адреса этой формы. Ибо для этой информации было только одно поле, и поэтому было невозможно вернуться на несколько шагов назад.
Когда вы изменяете "Struts-Flow" - что может привести к использованию другой формы - эта информация будет потеряна.
Если пользователь осмелится поставить закладку где-нибудь в вашем веб-приложении - эта информация, возможно, никогда не была установлена, и снова результат снова будет либо непредсказуемым, либо недостаточно гибким!
Мое "решение" :
Я сохранял каждую релевантную для навигации страницу, которую посетил пользователь, в стековом хранилище в сеанс . Это означает, что навигационный путь собирается и сохраняется для последующих навигаций.
На любой странице в веб-приложении, где используется обратная навигация, я использовал самодельный тег, который отображает содержимое стека в URL.
И это все .
При щелчке по этому обратному URL-адресу стек заполнялся содержимым обратного URL-адреса, по которому щелкнул пользователь (в котором хранится вся информация из стека после визуализации обратной ссылки).
Это совершенно ясно, потому что нажатие на ссылку является четким состоянием, когда веб-разработчик точно знает, где пользователь «находится» в этот самый момент - абсолютно независимо от того, что пользователь делал раньше (например, нажатие на браузер). кнопка назад несколько раз). Тогда стек навигации строится на этом новом состоянии.
Возобновить:
Становится ясно, что это не будет лучшим решением. Но это позволяет хранить дополнительную информацию в стеке, такую как параметры страницы и некоторые другие полезные вещи (возможны дальнейшие разработки).
Итак, как вы решили эту проблему?
ура
маны * * тысяча пятьдесят-одна