【问题标题】:RequestDispatcher .forward(req, res) in Servlet doesn't have any effectServlet 中的 RequestDispatcher .forward(req, res) 没有任何作用
【发布时间】:2012-04-10 07:47:16
【问题描述】:

我在转发到 .jsp 页面时遇到问题。让我描述一下我的程序:

在 Servlet 中我想确认一些事情,所以我做了 .forward() 到 .jsp,其中我在 $(document).ready(function()...中包含了带有确认的 javascript...

如果选择了 OK,我会创建新的 XMLHttpRequest() 并设置参数 confirm=1 并返回到之前的 Servlet,在该 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 代码(其他情况) .forward() 调用工作正常。但是下次它什么也不做,无论我尝试转发到哪个页面。就像我根本没有转接电话一样。奇怪的。我真的希望有人对此作出解释。

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

【问题讨论】:

  • 就像我说的,它可能不是前向引起的问题。或者是吗?我该如何解决这个问题?
  • 提供调用 AJAX Servlet 的代码
  • 我用 JSON 解决了​​我的问题,所以我直接将所需的属性添加到了 javascript。
  • 最好在此处提供解决方案并将问题标记为关闭。将来会对其他人有所帮助。

标签: java javascript jsp servlets dispatcher


【解决方案1】:

在确认情况下, 你确定你走到尽头,然后叫前锋?

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

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

【讨论】:

  • 我尝试调试它,但似乎一切都正确执行,除了向前。
  • 我猜问题根本不在前面。我在 .jsp 中添加了一些 system.out.print 属性,它具有正确的值。但是为什么页面不重新加载?
  • 即使我转发到不同的页面,我仍然看到相同的 .jsp。
  • 你有 servletFilters 吗?还是一些 url 重写?
  • 我还不是很有经验,我真的不知道这是什么。所以可能不会。我怎样才能检查它?如果有,我该怎么办?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2011-12-06
    • 2020-12-21
    相关资源
    最近更新 更多