我正在与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。
任何想法如何解决?
提前感谢。
好像您没有将cid
参数添加到重定向中。必须通过POST或查询字符串将其传递,以便会话继续进行。您可以从注入的“对话”对象中检索到的值。