我是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之间传递数据是正确的吗?
答案 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次额外的重定向。 如果您有任何建议,如何解决问题,请写出来。此外,我将非常感谢有关删除此方法中的额外重定向的任何帮助。