使用 PF 3.3.1、PrettyFaces 3.3.3 和 JSF/Mojarra2.1。
我有一个自定义导航处理程序来处理我的应用程序页面上的“取消”按钮 - 取消按钮需要返回到上一个(引用)页面。我已经实现了一个基于堆栈的解决方案,它保存了用户导航的踪迹,并且几乎完成了 navigationHandler 的实现——但现在我遇到了一个障碍。我似乎无法获得取消操作以导航回我想要的页面。我尝试了以下方法:
FacesContext.getCurrentInstance().redirect
在我的 NavigationHandler.handleNavigation 中。
所以接下来我尝试了类似的东西(同样,在 NavigationHandler.handleNavigation 中):
BreadCrumbStack.NavDetail navDetail = breadCrumbStack.popLastCrumb(facesContext);
if (navDetail != null) {
navDetail.getPrevViewId() + " ActionMethod: " + navDetail.getActionMethod() + " ActionName: " + navDetail.getActionName());
facesContext.getViewRoot().setViewId(navDetail.getPrevViewId());
parentHandler.handleNavigation(fc, navDetail.getActionMethod(), navDetail.getActionName());
return;
}
现在的问题是 URLMapping(漂亮的面孔 3.3.2) - 抱怨没有 ID,这是必需的:
PrettyException: Exception occurred while building URL for Mapping Id Required value was null
我在它的末尾有带有 ID 的完整 URL - 我想在我的重定向中使用它 - 但是,在我的自定义 navigationHandler 的 handleNavigation 方法中,重定向似乎无法正常工作。
有人对我如何能够优雅地解决这个问题有任何想法吗?附加在 url 末尾的 ID/参数可能因每个屏幕而异,我并不特别想一起破解解决方案 - 如果我能以某种方式将 url 提供给 PrettyFaces 中的某个预定义类,那就太好了会工作或做一个完整的重定向(我无法上班)
在此先感谢您的帮助!