我在转发到.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,我仍然会看到前一个。
答案 0 :(得分:0)
在确认的情况下, 你确定你走到了尽头,并打电话给前锋吗?
可能是你得到一个空指针或类似的东西。
尝试添加system.out.println()或以调试模式运行。
答案 1 :(得分:0)
我没有真正设法解决我的问题.jsp页面没有加载。我实际上只需要将一些属性从Servlete传递给javascript,所以我使用了jQuery ajax调用PrintWriter,所以我将这些属性作为键:javascript函数中的值对。然后我只是使用javascript将这些值设置为某些跨度。