【问题标题】:Request dispatching from one JSP to another JSP请求从一个 JSP 分派到另一个 JSP
【发布时间】:2014-10-08 13:52:10
【问题描述】:

我目前正在从事支付网关类项目。如果后端发生任何验证错误,首先我想在我的 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>

【问题讨论】:

  • 我们可以将对象(错误代码)也发送到元重定向中的商家页面吗?

标签: javascript spring jsp spring-mvc


【解决方案1】:

您不能将输出发送到jsp然后让线程休眠或其他东西,网络服务器在代码执行完成之前不会发送输出,因为我们看不到您的代码,我会假设您正在尝试输出错误,使线程休眠,然后发送重定向,所要做的就是将其写出来,然后在将其发送到客户端时立即发送重定向。

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

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

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

【讨论】:

  • 你做的和我想的一模一样。你告诉解释器休眠 10 秒,然后转发客户端,但是网络服务器在将输出发送到客户端之前完成页面中的所有代码的执行,所以没有延迟,延迟只会使页面需要 10 秒加载根据this 这样的事情应该可以工作&lt;script type="text/javascript"&gt; window.location.replace("http://yourwebsite.com/merchant.jsp"); &lt;/script&gt; 编辑:cmets 中的格式很奇怪。
  • 太好了。谢谢。可以通过 location.replace() 进行排序并使用 javascript 提交表单
猜你喜欢
  • 2014-06-07
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
相关资源
最近更新 更多