Servlet中的RequestDispatcher .forward(req,res)没有任何效果

时间:2012-04-10 07:47:16

标签: java javascript jsp servlets dispatcher

我在转发到.jsp页面时遇到问题。让我来描述我的计划:

在Servlet中我想确认一些事情,所以我将.forward()改为.jsp,其中我在$(document).ready(function()...

中包含了javascript with confirm

如果选择了OK,我创建新的XMLHttpRequest()并设置参数confirm = 1并返回上一个Servlet,其中在确认(confirm = 1)之后必须执行的代码块按预期执行。但是那个.forward回到.jsp的最后一行似乎根本没有效果。

Servlet代码:

if("1".equals(request.getParameter("confirm"))){
  ...
   setting some request.setAttribute();
}
else{
  ...
}

RequestDispatcher  rd = request.getRequestDispatcher(...);
rd.forward(req, res);

实际上,我看到了正确的页面,但它是在我认为确认之前。它应该已经重新加载,因为我必须从请求中获取一些属性并使用jquery显示一些内容,具体取决于这些属性值。

那么你认为.forward()没有效果的原因是什么?我可以以某种方式强制页面重新加载吗?

编辑:第一次执行Servlet代码(否则为case).forward()调用正常。但是下次它什么都不做,无论我尝试转发哪一页。就像我根本没有前方呼叫一样。奇怪。我真的希望有人对此有解释。

EDIT2:我猜这不是前方问题。如果我执行所需属性的system.out.print,我会得到正确的值。但为什么页面没有重新加载?即使我转发到不同的.jsp,我仍然会看到前一个。

2 个答案:

答案 0 :(得分:0)

在确认的情况下, 你确定你走到了尽头,并打电话给前锋吗?

可能是你得到一个空指针或类似的东西。

尝试添加system.out.println()或以调试模式运行。

答案 1 :(得分:0)

我没有真正设法解决我的问题.jsp页面没有加载。我实际上只需要将一些属性从Servlete传递给javascript,所以我使用了jQuery ajax调用PrintWriter,所以我将这些属性作为键:javascript函数中的值对。然后我只是使用javascript将这些值设置为某些跨度。