为什么没有forwardResolution重定向?

时间:2014-06-26 12:53:35

标签: java jsp servlets web-applications stripes

我是Stripes的新手,我试图这样做:使用Ajax将数据从JSP1传递到属于JSP2的actionBean2,然后在JSP2上显示数据。

我喜欢这样,因为JSP2为所有内容提供了通用接口,我想将用户重定向到JSP2,以便他/她可以使用JSP2的标准接口查看在JSP1中选择的项目。 因此,当我尝试将数据从ActionBean2传递到JSP2时,会出现问题。即使我的actionBean2的return语句如下所示:

return new ForwardResolution("/jsp2.jsp"); 

它实际上并没有将我从JSP1重定向到JSP2。 RedirectResolution不起作用。 我看到发送JSP1的AJAX请求,ActionBean2中的事件处理程序接收它,但不会将我从JSP1重定向。 JSP1甚至获得了JSP2 url的GET请求,但页面仍然没有重新加载。所以,看起来即使我在ActionBean2中,它仍然使用JSP1。

我的问题是 - ForwardResolution应该立即将我重定向到另一个页面(并重新加载浏览器页面)吗?而且 - 我想在这些页面和actionBeans之间传递数据是正确的吗?

1 个答案:

答案 0 :(得分:0)

好的,我不得不使用一种我根本不喜欢的解决方法。它仍然有效。但如果您有任何建议,请写信。

我使用JavaScript重定向将参数从JSP1传递到JSP中的JSP2。直截了当的方法,但它解决了这个问题(当我尝试使用Resolution重定向时,JSP没有重定向):

    window.location.href ="jsp2.jsp?myparameters"+$.param(myparameters);

在JSP2中,我使用AJAX来调用JSP2 actionBean。

if (window.location.search.indexOf("myparameters") != -1){
            values = window.location.search.substr(window.location.search.indexOf("myparameters"), window.location.search.length);
            values = decodeURIComponent( values );
//some parsing here, didn't include it                  
              $.ajax({
                    url: "JSP2.action?from_redirect=",                     
                    data: {values: values}, 
                    type: "POST",
                    success: function(data) {
                       displayValues(data)
                    }
                });

在JSP2.action中,我使from_redirect侦听器返回:

   return new StreamingResolution("application/javascript", data);

所以,这种方法有效,但我不喜欢1次额外的重定向。 如果您有任何建议,如何解决问题,请写出来。此外,我将非常感谢有关删除此方法中的额外重定向的任何帮助。