Как создать страницу точки входа JSF с логикой условной навигации перед отображением страницы? - PullRequest
0 голосов
/ 30 августа 2011

Точка входа в мое приложение JSF - EntryPoint.jsp.Мы используем JSF 1.2.Пользователь может позвонить EntryPoint.jsp с несколькими различными параметрами URL.Мне бы хотелось проанализировать эти параметры, загрузить сессионный компонент с некоторым состоянием, сделать все это до загрузки страницы и либо продолжить обработку / отображение EntryPoint.jsp, либо переместиться / перенаправить на другую страницу в приложении.Кто-нибудь может порекомендовать лучший дизайн для этого?

Я пробовал в своем компоненте поддержки EntryPoint.java (исключение обработки исключено):

@PostConstruct
public void init() {
    HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
    companyName = request.getParameter("companyCode");
    //process parameters...
    if (someCondition) {
        FacesContext.getCurrentInstance().getExternalContext().dispatch("/other.jsp");
        return;
    }
 }

, но я получаю IllegalStateException: Response already committed.

Я также пытался

FacesContext.getCurrentInstance().getExternalContext().redirect("/other.jsp");

, но также получал исключение IllegalStateException (без сообщения).Очевидно, что это не подходящий способ или место для этого.Кто-нибудь может порекомендовать лучший способ добиться того, что я ищу?

В этом посте кажется, что фильтр сервлетов может быть хорошим выбором.Если это так, будет ли компонент поддержки JSF области сеанса доступен в фильтре сервлета?

1 Ответ

1 голос
/ 30 августа 2011

Это действительно не будет работать для JSF 1.x. Как вы обнаружили в другом вопросе, Filter действительно более подходящее место для этой работы. Этот ответ не изменился с тех пор. Управляемый компонент JSF в рамках сеанса сохраняется в HttpSession с именем управляемого компонента в качестве имени атрибута сеанса. Так что да, это доступно в Filter. Более того, Filter может создать его и поместить в сеанс. JSF будет использовать его вместо автоматического создания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...