对话范围不适用于重定向

问题描述 投票:1回答:1

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

已完成测试:

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

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

  • 如果我按如下所示进行重定向:

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

它可以正确导航到友好的URL,但是对话无法进行,因为在我重定向之前,我设置了在commandbutton操作中接收到的对象,并且当在对话bean中导航该对象时为null。

任何想法如何解决?

提前感谢。

jsf redirect cdi prettyfaces conversation-scope
1个回答
3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.