Использование PhaseListener для перехвата фазы рендеринга - PullRequest
0 голосов
/ 21 марта 2012

Я вызываю функцию в компоненте поддержки, но перед рендерингом страницы jsf мне нужно выполнить некоторые операции, которые зависят от страницы jsf, которая будет отображаться (эта страница изменяется от одного вызова к другому).

Мне нужно перехватить имя URL-адреса перед страницей рендеринга, потому что мне нужно выполнить операции и сохранить результат в сеансе.

Поэтому я хочу использовать PhaseListener для получения URL-адреса, а не имянавигационного кейса.

Например: функция ' execute ' возвращает ' ivIndex ', но мне нужно получить ' / zone / iv / index.xhtml '.

Как я могу это сделать?

метод:

public String execute(){
  return nameUrl(); // return name of a navigation rule, per example : ivIndex

face-config.xml

<navigation-rule>
    <from-view-id>*</from-view-id>

    <navigation-case>
        <from-outcome>ivIndex</from-outcome>
        <to-view-id>/zone/iv/index.xhtml</to-view-id>
    </navigation-case>

1 Ответ

0 голосов
/ 21 марта 2012

Вы можете использовать

FacesContext.getCurrentInstance().getViewRoot().getViewId();
...