2012-03-01 28 views
3

重定向页面我有一个适当的新手SEAM问题,我想给用户一个不同的页面从后台beanSEAM从后台bean

我知道你应该使用pages.xml中但有可能是大多数情况下重定向根据bean的逻辑,有很多不同的页面,所以它看起来应该比bean更容易做到。

我不能看到的人做任何的例子,以便即时猜测还有一个原因,也许像这样的工作吗?...

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

回答

5

您可以使用重定向组件:

@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。