Семантика "?faces-redirect=true " in и почему бы не использовать его везде
Я хотел бы понять, какова семантика добавления "?faces-redirect=true"
в свойстве действия <h:commandlink>
тег в JSF2.0. Будь то с ним или без него, приложение действительно переходит на целевую страницу, указанную в действии. Поэтому на первый взгляд кажется, что единственный эффект-косметический, т. е. предоставить обратную связь Пользователю (если он смотрит на посещенный URL браузера), что он перешел на новую страницу. Но если это так безобидно и без побочных эффектов, я не понимаю, почему это не поведение по умолчанию. Я подозреваю, что это связано с пост-механизмом JSF2.0. Я заметил при просмотре приложения JSF, что URL-адреса, которые вы видите в своем браузере (когда ?faces-redirect=true
не используется) являются те из "предыдущей ""страницы".
meta-NB. Я за брандмауэром и страдаю от проблемы "SO требует внешнего JavaScript из другого домена", поэтому я прошу прощения за отсутствие форматирования. Я также предоставлю отзывы о ваших ответах через несколько часов, когда я могу получить доступ из другого домена.
1 ответов
переход от страницы к странице не должен выполняться с помощью POST вообще. Вы должны использовать normal <h:link>
или <h:button>
для этого вместо <h:commandLink>
или <h:commandButton>
.
так вместо
<h:commandLink value="Next page" action=nextpage.xhtml?faces-redirect=true" />
вы должны использовать
<h:link value="Next page" outcome="nextpage.xhtml" />
это имеет главное преимущество, что сайт теперь SEO дружественный. Searchbots, а именно, не индексирует формы.
использовать <h:commandLink>
только если вам нужно отправить форму с некоторым пользовательским вводом. Но чаще всего результат просто представлен на той же странице, если необходимо условно визуализировать / включить. Только при успешной отправке, которая абсолютно необходима для перехода на другую страницу (например, login/logout), вы действительно должны отправлять перенаправление. Это так называемый Post-Redirect-получить шаблон.