Как заставить кнопку «Назад» работать с приложением JSF с установленным отсутствием кэширования? - PullRequest
0 голосов
/ 20 октября 2011

Это проблема, которую я унаследовал. У нас есть приложение JSF / RichFaces / Seam, в котором по соображениям безопасности не установлен ни один кеш. Проблема возникает, когда пользователи нажимают кнопку «назад», вызывая перепост формы. Иногда (и это противоречиво) повторная процедура POST после нажатия кнопки «Назад» устанавливает нулевые свойства компонента поддержки. Когда кэширование установлено как частное, этого не происходит. К сожалению, это не вариант.

Я искал обходной путь для этого, и я не уверен, что есть один.

Кто-нибудь знает стандартный шаблон для этого?

1 Ответ

0 голосов
/ 20 октября 2011

Кто-нибудь знает стандартный шаблон для этого?

Да, шаблон Post-Redirect-Get . Добавьте <redirect/> к интересующим вас случаям навигации, чтобы выполнить перенаправление на запрос GET после POST. Затем кнопка «Назад» перейдет к запросу GET. В JSF 2.x вы также можете сделать это, добавив к результату параметр ?faces-redirect=true.

Однако у него есть недостаток, когда ваше веб-приложение плохо разработано таким образом, что вы отправляете POST-запросы со страницы на страницу, а не POST-запросы к себе (предпочтительно со вкусом ajax). Таким образом, любой bean-объект в области запросов больше не доступен в перенаправленном GET-запросе.

Кроме того, когда вы используете командные ссылки вместо выходных ссылок для простой ванильной навигации по страницам (например, ссылки в меню и т. Д.), Они должны быть привязаны к выходным ссылкам. Использование POST здесь совершенно не имеет значения, они должны быть получены с самого начала.

В идеале, наверняка в веб-приложениях JSF 1.x вообще не должно быть никаких случаев навигации, если вы хотите оптимизировать SEO, создавать закладки и работать с пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...