jsf - 为什么 NavigationHandler.handleNavigation() 不转发到 View ID?

标签 jsf

在“RESTORE_VIEW”阶段运行的阶段监听器类中,我有一些这样的代码:

public void afterPhase(PhaseEvent event) {
  FacesContext fc = event.getFacesContext();
  NavigationHandler nh = fc.getApplication().getNavigationHandler();
  nh.handleNavigation(fc, null, "/a/specific/path/to/a/resource.jspx");
}

导航到新 URL 在这里不起作用。发出的请求只会收到来自导航到的原始 JSPX 的响应。

像这样的代码工作正常:

public void afterPhase(PhaseEvent event) {
  FacesContext fc = event.getFacesContext();
  NavigationHandler nh = fc.getApplication().getNavigationHandler();
  nh.handleNavigation(fc, null, "OUTCOME_DEFINED_IN_FACES_CONFIG_XML");
}

另外,第一个代码片段可以与 IceFaces Faces 提供程序一起使用,但不能与我需要使用的 Sun JSF 1.2 一起使用。我可以做些什么来修复代码,以便转发到特定的 URL 吗?

最佳答案

使用ExternalContext#dispatch()反而。

或者,如果它应该是一个重定向,使用 ExternalContext#redirect() .

它在 IceFaces 中工作一定是一个错误或特定于 impl 的“功能”。这不是什么NavigationHandler API 契约定义。

关于jsf - 为什么 NavigationHandler.handleNavigation() 不转发到 View ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2569425/

相关文章:

jsf - 如何在 SesionScoped bean 中使用 ViewScoped bean?

java - JSF <f :validateRegex pattern

Java EE 目录结构

java - 即使流已关闭,执行删除时文件仍在使用中

java - rich dataTable 不能对嵌套循环使用迭代变量

java - 默认情况下,JSF 生成不可用的 ID,这些 ID 与 Web 标准的 CSS 部分不兼容

jsf - 执行托管 bean 操作方法后显示 alert()

html - 用户如何<h :messages> only if not null messages?

jquery - 在丰富的 :dataTable the background color of the datatable row disappears

java - JSF convertDateTime 呈现前一天