我有一个 JSF 2 应用程序,它从数据库中检索数据并将其显示在页面上。我有一个名为“getCurrentPage”的属性获取方法,它将显示数据库数据。在此方法中,如果指定页面不存在数据,我想重定向到 404 页面。我试过了
FacesContext.getCurrentInstance().getExternalContext().redirect("404.xhtml");
但我得到一个 java.lang.IllegalStateException。如何重定向?
这是我的 XHTML 片段
<h:panelGroup layout="block">
<h:outputText escape="false" value="#{common.currentPage.cmsPageBody}"/>
</h:panelGroup>
这是我的 bean 片段
public CmsPage getCurrentPage() {
HttpServletRequest request = (HttpServletRequest) (FacesContext.getCurrentInstance().getExternalContext().getRequest());
try {
String requestUrl = (String) request.getAttribute("javax.servlet.forward.request_uri");
if (this.currentCmsPage == null) {
// Page not found. Default to the home page.
this.currentCmsPage = cmsPageBL.getCmsPage("/en/index.html", websiteId);
} else {
this.currentCmsPage = cmsPageBL.getCmsPage(requestUrl, websiteId);
}
if (this.currentCmsPage == null) {
FacesContext.getCurrentInstance().getExternalContext().redirect("404.xhtml");
}
}
} catch (Exception ex) {
log.error("getCurrentPage Exception: ", ex);
}
return currentCmsPage;
}
}