我有一个带有以下xhtml结构的JSF 2应用程序:
- web应用 --index.xhtml --folder1 --targetPage.xhtml --folder2 --otherPage.xhtml
我有一个名为TargetPageBean的托管bean,其方法如下:
public String navigateToTargetPage() {
if( isOnIndexPage() ) {
return "folder1/targetPage.xhtml?faces-redirect=true";
} else {
return "targetPage.xhtml?faces-redirect=true";
}
}
在这两种情况下,这样可以正常工作:
但是这种方法非常糟糕,因为我的树形结构可能更深,我可能想要从几乎所有地方移动到目标页面。我是否可以告诉JSF它应该始终从“root”重定向,以便我只需要返回folder1/targetPage.xhtml?faces-redirect=true
? (我不想通过faces-config文件使用显式导航)
答案 0 :(得分:2)
您可以使用带有完整请求路径的重定向:
getFacesContext().getExternalContext().redirect(getRequest().getContextPath() +
"/page.jsf?" + Constants.CONSTANT_NAME + "=" + bean.getSomeValue());
,其中
protected HttpServletRequest getRequest() {
return (HttpServletRequest) getFacesContext().getExternalContext().getRequest();
}
protected FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}