请求从一个JSP调度到另一个JSP

时间:2014-10-08 13:52:10

标签: javascript spring jsp spring-mvc

我目前正在使用支付网关类项目。如果在后端发生任何验证错误,首先我想在我的jsp页面(支付网关)上显示错误消息,并在10秒后我想从我的jsp向商家(商家的网页)发送对象(错误代码)页。

目前,当我尝试在我的jsp页面中调度和转发时,我的错误消息/查看内容未显示在jsp中。它不是显示我的错误消息,而是等待10秒钟并将对象转发给商家。因为我希望我不通过调度来让我的jsp中的请求/响应对象提交。如果我错了,请纠正我。

请建议我处理这种情况的好方法?

我想在我的jsp页面中这样做..

</head>
<body>
<form:form method="post"  commandName="item">
 <form:errors path="*" cssClass="errorblock" element="div" />
 
 <tr>
<td>Response Code :</td><td>${item.responseCode}</td>

<%="test" %>
</tr>
<%
Thread.sleep(10000); // sleep 10 seconds
RequestDispatcher rd = request.getRequestDispatcher("/merchant.jsp");
 //rd.include(request, response);
rd.forward(request, response);
%>
</body>

1 个答案:

答案 0 :(得分:2)

你不能将输出发送到jsp然后睡眠线程或东西,web服务器在代码执行完毕之前不会发送输出,因为我们看不到你的代码,我将假设你试图输出错误,睡眠线程,然后发送一个重定向,所有这一切都是写出来然后immediatley发送重定向,当它被发送到客户端。

您最好的选择可能是使用javascript在您重定向客户端的页面上发送重定向以显示错误。

编辑:因为评论格式很奇怪: servlet不会等待10秒然后发送重定向,因为所有处理都是在发送响应之前完成的,事后发送更多数据的唯一方法是javascript,或者其他一些奇怪的黑魔法,最简单的最优雅的解决方案是:

<script type="text/javascript">
    window.location.replace("http://yourwebsite.com/merchant.jsp"); 
</script>