Получить JSF 2 URL, чтобы изменить после первого, а не второго клика - PullRequest
7 голосов
/ 12 января 2012

URL-адреса JSF, похоже, не меняются после первого клика, только после 2-го.Например, при переходе от home.jsf к auction.jsf отображаемая страница уже равна auction.jsf, но URL-адрес в адресной строке браузера остается на home.jsf, пока я не нажму ссылку Аукцион во второй раз.Почему это происходит?Есть ли способ отключить его и заставить URL отображаться правильно?

Ответы [ 2 ]

7 голосов
/ 12 января 2012

Похоже, вы перемещаетесь по POST, а не по GET.Вы не должны выполнять постраничную навигацию по POST в первую очередь.Замените <h:commandLink> на <h:link>.

Итак, не перемещайтесь по

<h:form>
    <h:commandLink value="Auction" action="auction" />
</h:form>

, а по

<h:link value="Auction" outcome="auction" />

Форма JSF POST в основном отправляется на текущий URL, и любая навигация по умолчанию выполняется серверной стороной вперед с использованием RequestDispatcher#forward() (если вы хорошо знакомы с базовым API сервлета, вы знаете, что это значит).Вместо этого вы можете обойтись перенаправлением

<h:form>
    <h:commandLink value="Auction" action="auction?faces-redirect=true" />
</h:form>

, но, как уже было сказано, это обходной путь, а не решение.

См. Также:

3 голосов
/ 12 января 2012

Вам необходимо добавить faces-redirect=true к вашему URL. Посмотрите этот короткий учебник от Mkyong.com .

...