Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/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 会话作用域无法使用重定向_Jsf_Redirect_Cdi_Prettyfaces_Conversation Scope - Fatal编程技术网

Jsf 会话作用域无法使用重定向

Jsf 会话作用域无法使用重定向,jsf,redirect,cdi,prettyfaces,conversation-scope,Jsf,Redirect,Cdi,Prettyfaces,Conversation Scope,我正在使用JSF和PrettyFaces,我需要做下一件事。我在ui中生成了4个按钮:repeat。每个commandButton都会在对话Bean中设置一个对象,然后我必须导航到另一个页面并单击按钮中设置的对象。这看起来很简单,但问题是我需要在浏览器中有一个对PrettyFaces友好的URL 进行的测试: 如果我将xhtml资源作为字符串放在ReturnCommandButton中,则操作将正确导航,但URL指向xhtml资源,而不是友好的URL。(例如:…host/my-web/pric

我正在使用JSF和PrettyFaces,我需要做下一件事。我在ui中生成了4个按钮:repeat。每个commandButton都会在对话Bean中设置一个对象,然后我必须导航到另一个页面并单击按钮中设置的对象。这看起来很简单,但问题是我需要在浏览器中有一个对PrettyFaces友好的URL

进行的测试:

  • 如果我将xhtml资源作为字符串放在ReturnCommandButton中,则操作将正确导航,但URL指向xhtml资源,而不是友好的URL。(例如:…host/my-web/prices.xhtml)

  • 如果我将友好URL作为字符串(/web/prices/)放在returncommandButton中,则该操作不会导航

  • 如果我按如下方式重定向:

    FacesContext context = FacesContext.getCurrentInstance();
    HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
    
    try {
         context.getExternalContext().redirect("/web/prices/");
    
它可以正确地导航到友好的URL,但对话不起作用,因为在重定向之前,我正在设置commandbutton操作中接收的对象,并且在对话bean中导航该对象时为空

你知道怎么解决吗


提前感谢。

看起来您没有将
cid
参数添加到重定向中。为了继续对话,必须通过POST或查询字符串传递。您可以从注入的对话对象中检索的值。

您使用的是哪个版本的PrettyFaces?问题是bean在重定向后将无法存活。最好在会话中存储数据,并在处理prices.xhtml页面的bean的
@PostConstruct
中检索数据。我相信@LightGuard是正确的。如果以编程方式执行重定向,则需要手动添加CID参数。