Страница перенаправления SEAM с бэк-бина - PullRequest
4 голосов
/ 01 марта 2012

У меня есть правильный вопрос для новичка в SEAM, я хочу перенаправить пользователя на другую страницу из вспомогательного компонента

Я знаю, что в большинстве случаев вам следует использовать pages.xml, однако может быть несколько разныхстраницы зависят от логики бина, поэтому кажется, что из бина это сделать намного проще.

Я не вижу примеров того, как люди делают это, поэтому я предполагаю, что есть причина, почему, может быть, что-то вроде этогобудет работать ?? ...

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
((HttpServletRequest) ec.redirect("http://example.com/");

1 Ответ

5 голосов
/ 02 марта 2012

Вы можете использовать компонент Redirect:

@Name("yourBean")
public class YourBean {

  @In
  Redirect redirect;

  public void yourMethod() {
     redirect.setViewId("/someView.xhtml");
     redirect.setParameter("someParam", "someValue");
     redirect.execute();
  }
}

Или использовать FacesManager:

FacesManager.instance().redirect("/someView.xhtml", paramMap,
  conversationPropagationEnabled, includePageParams);

Они работают только для других представлений JSF (например, .xhtml).Если вам просто нужен произвольный URL, вы можете использовать FacesContext, как вы упомянули в своем вопросе.

...