取决于您是发送重定向还是仅导航.
如果您要发送重定向,请将其放入flash范围:
Faces.setFlashAttribute("car", car);
这可以在下一个bean的@PostConstruct
中使用:
Car car = Faces.getFlashAttribute("car");
或者,如果你只是在浏览页面,那么将它放在请求范围内:
Faces.setRequestAttribute("car", car);
这将在下一个Bean的@PostConstruct
中可用:
Car car = Faces.getRequestAttribute("car");
请注意,我假设您非常清楚设计选择,即具有两个完全独立的视图,没有另一个视图不能存在(不具有幂等性),而不是具有条件渲染内容的单个视图。并且您已经知道当实际请求幂等地(即通过书签、共享链接、搜索机器人等)时,视图应该如何表现。如果不知道,请务必仔细阅读此问题上的答案:如何在JSF中导航?如何使URL反映当前页面(而不是先前的页面)。
更新:如果您没有使用OmniFaces,则分别使用以下内容:
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("car", car);
Car car = (Car) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("car");
FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("car", car);
Car car = (Car) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("car");
Faces.setFlashAttribute("car", car);
上遇到了ClassNotFoundException
,这里 是跟踪信息。 omnifaces 库的范围设置为compile
,这样正确吗?(尝试将其设置为运行时,但我再次遇到了相同的异常) - Chris/WEB-INF/lib
文件夹中。默认作用域(编译)应该可以正常工作。 - BalusCmvn compile
命令,并且它已经成功完成。这是我现在拥有的范围。我甚至在pom.xml
中明确声明了它,但我仍然遇到了异常。我应该像使用Primefaces
一样下载 jar 包并将其添加到WEB-INF/lib
文件夹中,还是发布一个新问题来解决这个问题? - Chrisprimefaces-5.0.jar
下载到了WEB-INF/lib
文件夹中。我可能已经搞砸了我的配置,这是我第一次使用所有这些工具并使用Java EE。 - Chris