Вам нужен идентификатор страницы, откуда вы переходите. На первый взгляд, сохранение его в сеансе кажется хорошей идеей, однако это может остаться в конфликте, если вы перемещаетесь по нескольким вкладкам (совместно используя один и тот же сеанс 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