Перейти на предыдущую страницу с помощью JSF

Я использую вспомогательный компонент, в котором я могу сохранить форму и перейти на эту страницу.

public String saveHere() {
    return Faces.getViewId() + "?faces-redirect=true&includeViewParams=true";
}

Как перейти на предыдущую страницу с помощью OmniFaces? Мое действие по сохранению должно привести к странице, на которой у меня есть кнопка «Изменить». Обычно это вид списка (с кнопкой редактирования рядом с самим элементом) или другая страница с (с кнопкой редактирования этого элемента)

Спасибо!


person Dimitri Dewaele    schedule 13.06.2014    source источник


Ответы (1)


Вам нужен идентификатор страницы, откуда вы переходите. На первый взгляд, сохранение его в сеансе кажется хорошей идеей, однако это может остаться в конфликте, если вы перемещаетесь по нескольким вкладкам (совместно используя один и тот же сеанс Http через разные вкладки браузера).

Сказав это, наиболее правильное решение для вашего случая - передать параметр представления в представление вашего издания, указывающее, откуда вы пришли. Это должно быть так просто:

<h:button outcome="edit" value="Edit registry">
    <f:param name="pageFrom" value="#{view.viewId}" />
</h:button>

После этого в вашем издании привяжите этот параметр к вашему компоненту:

<f:metadata>
    <f:viewParam name="pageFrom" value="#{editBean.pageFrom}" />
</f:metadata>

И просто перенаправьте на это представление в вашем EditBean.java после сохранения, предположим, что это @ViewScoped:

public String saveHere() {
    //save here
    return pageFrom + "?faces-redirect=true&includeViewParams=true";
}

Это самый прямой способ добиться того, о чем вы просите. Однако вы должны учитывать, что страница, с которой вы заходите, остается параметром просмотра, чтобы конечный пользователь мог ввести там то, что он хочет. При таком поведении он мог добиться перенаправления на какую-то другую страницу, а не на ту, которую ожидал. Если вы хотите избежать этого, используйте область flash вместо параметров просмотра.

См. также:

person Xtreme Biker    schedule 13.06.2014