Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 在@viewscope bean之间传递对象,而不使用GET参数_Jsf_Parameter Passing_Jsf 2.2_Omnifaces_View Scope - Fatal编程技术网

Jsf 在@viewscope bean之间传递对象,而不使用GET参数

Jsf 在@viewscope bean之间传递对象,而不使用GET参数,jsf,parameter-passing,jsf-2.2,omnifaces,view-scope,Jsf,Parameter Passing,Jsf 2.2,Omnifaces,View Scope,我有一个browse.xhtml,在这里我浏览汽车的列表,我想在details.xhtml中查看汽车的详细信息,当按下“查看更多”按钮时。它们的支持bean是@ViewScoped,分别称为BrowseBean和DetailsBean 现在,我不希望用户/客户机在URL中看到汽车ID,因此我希望避免使用GET-params,如所示和所示 有没有办法做到这一点?我将Mojarra 2.2.8与PrimeFaces 5和OmniFaces 1.8.1一起使用。取决于您是发送重定向还是仅仅导航 如果要

我有一个
browse.xhtml
,在这里我浏览
汽车的列表
,我想在
details.xhtml
中查看汽车的详细信息,当按下“查看更多”按钮时。它们的支持bean是
@ViewScoped
,分别称为
BrowseBean
DetailsBean

现在,我不希望用户/客户机在URL中看到汽车ID,因此我希望避免使用GET-params,如所示和所示


有没有办法做到这一点?我将Mojarra 2.2.8与PrimeFaces 5和OmniFaces 1.8.1一起使用。

取决于您是发送重定向还是仅仅导航

如果要发送重定向,请将其放入闪存范围:

Faces.setFlashAttribute("car", car);
这在下一个bean的
@PostConstruct
中可用,如下所示:

Car car = Faces.getFlashAttribute("car");
Car car = Faces.getRequestAttribute("car");
或者,如果只是导航,则将其放入请求范围:

Faces.setRequestAttribute("car", car);
这在下一个bean的
@PostConstruct
中可用,如下所示:

Car car = Faces.getFlashAttribute("car");
Car car = Faces.getRequestAttribute("car");
另见:
请注意,我假设您非常了解这样一种设计选择,即拥有两个完全独立的视图,如果没有另一个视图,它们就不可能存在(幂等),而不是拥有一个具有条件呈现内容的视图。而且您已经知道,当视图实际被等幂请求时(即通过书签、共享链接、搜索机器人等),视图的行为应该如何。如果没有,那么我强烈建议仔细阅读关于这个问题的答案:


更新:如果您没有使用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);
这在下一个bean的
@PostConstruct
中可用,如下所示:

Car car = Faces.getFlashAttribute("car");
Car car = Faces.getRequestAttribute("car");
或者,如果只是导航,则将其放入请求范围:

Faces.setRequestAttribute("car", car);
这在下一个bean的
@PostConstruct
中可用,如下所示:

Car car = Faces.getFlashAttribute("car");
Car car = Faces.getRequestAttribute("car");
另见:
请注意,我假设您非常了解这样一种设计选择,即拥有两个完全独立的视图,如果没有另一个视图,它们就不可能存在(幂等),而不是拥有一个具有条件呈现内容的视图。而且您已经知道,当视图实际被等幂请求时(即通过书签、共享链接、搜索机器人等),视图的行为应该如何。如果没有,那么我强烈建议仔细阅读关于这个问题的答案:


更新:如果您没有使用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
,是否正确?(尝试将其设置为运行时,我再次遇到相同的异常)运行时类路径中缺少OmniFaces。显然,Maven构建以某种方式失败了。OmniFaces必须(与PrimeFaces完全相同)在构建的
/WEB-INF/lib
文件夹中结束。默认范围(compile)应该可以正常工作。我已经尝试了
mvncile
,它已经成功完成了。这就是我现在拥有的范围。我甚至在
pom.xml
中明确声明了它,但我仍然得到了异常。我应该下载jar并将其添加到
WEB-INF/lib
文件夹中,就像
Primefaces
一样,还是发布一个新问题来解决这个问题?这实际上是一个不相关的问题。但你到底是如何安装PrimeFaces的?您是说您手动将PrimeFaces JAR放入
/WEB-INF/lib
?因此,实际上您没有使用Maven进行构建?问题是,我没有成功地安装Primefaces,正如所报道的,因此我将
Primefaces-5.0.jar
下载到
WEB-INF/lib
文件夹中。我可能把我的配置搞砸了,这真的是第一次使用所有这些工具和Java EE。谢谢你的回复,但是我在
Faces.setFlashAttribute(“car”,car)上得到了
ClassNotFoundException
,是跟踪。omnifaces库范围设置为
compile
,是否正确?(尝试将其设置为运行时,我再次遇到相同的异常)运行时类路径中缺少OmniFaces。显然,Maven构建以某种方式失败了。OmniFaces必须(与PrimeFaces完全相同)在构建的
/WEB-INF/lib
文件夹中结束。默认范围(compile)应该可以正常工作。我已经尝试了
mvncile
,它已经成功完成了。这就是我现在拥有的范围。我甚至在
pom.xml
中明确声明了它,但我仍然得到了异常。我应该下载jar并将其添加到
WEB-INF/lib
文件夹中,就像
Primefaces
一样,还是发布一个新问题来解决这个问题?这实际上是一个不相关的问题。但你到底是如何安装PrimeFaces的?您是说您手动将PrimeFaces JAR放入
/WEB-INF/lib
?因此,实际上您没有使用Maven进行构建?问题是,我没有成功地安装Primefaces,正如所报道的,因此我将
Primefaces-5.0.jar
下载到
WEB-INF/lib
文件夹中。我可能有麻烦了