会话范围不使用重定向

时间:2013-08-06 13:33:34

标签: jsf redirect cdi prettyfaces conversation-scope

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

完成测试:

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

  • 如果我将友好的URL作为字符串(/ web / prices /)放在return命令按钮中,则操作不会导航。

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

    FacesContext context = FacesContext.getCurrentInstance();
    HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
    
    try {
         context.getExternalContext().redirect("/web/prices/");
    

它正确导航到友好的URL,但会话无法正常工作,因为在重定向之前,我正在设置在commandbutton操作中重新获取的对象,并且在会话bean中导航此对象时为空。

知道如何解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您似乎没有将cid参数添加到重定向中。必须通过POST或查询字符串传递,以便继续进行对话。您可以从注入的Conversation对象中检索的值。