3

我有一个 servlet,它使用 requestdispatcher() 转发到我的一个 jsp 页面

request.getRequestDispatcher("/WEB-INF/view/mypage.jsp").forward(
                    request, response);

目标mypage.jsp有一些 jquery 的优点,需要做一些显示/隐藏的东西,但由于某种原因,当 jsp 从 servlet 转发后显示时 jquery 没有被触发,但是当我直接访问页面时它工作通过地址栏(我将页面放在web-inf之外直接访问)。

即使是简单<body onload="alert('Testing')">的也行不通。我还在我的 jsp 中使用HTML5 和 jquerymobile

任何填补我知识空白的回复都会很棒。谢谢

以下是我的jsp页面:

<!DOCTYPE html>
<html>
<head>
<title>My App</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
</head>
<body onload="alert('Even this is not popping up')">
-- Stuff--
</body>
</html>
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
</head>
<body onload="alert('Even this is not popping up')">
-- Stuff--
</body>
</html>
4

5 回答 5

1

问题可能出在您访问 mypage.jsp 的方式上。由于它位于 /WEB-INF 文件夹中,因此不能从浏览器直接访问。如果页面仍在 /WEB-INF 文件夹中,我认为您不能通过地址栏直接访问该页面。

如果您从 /WEB-INF 外部访问它并且它可以工作,但是在您的 servlet 将请求转发给它之后,它不会,最可能的原因是您的 JSP 页面在发送到浏览器和服务器后尝试加载某些内容拒绝提供它 - 也许该资源也在 /WEB/INF 中。您可能还会发现链接很有帮助。

于 2012-05-10T00:42:35.823 回答
0

我想你在直接和间接访问时访问页面并查看源代码你会发现问题。使用文件差异工具比较两个输出。很可能您没有在其中一个版本中包含一些 JavaScript,或者当您间接访问时 jquery.js 库的相对路径不正确。

于 2012-05-09T21:17:52.463 回答
0

RequestDispatcher 是一个重定向,其工作方式类似于 include 的工作方式,因此您的页面可能正在被提供,但静态文件将无法访问,因为它们是由前端请求的。

将您的 js 文件也从 WEB-INF、css 和图像中移出。

于 2012-05-10T11:36:21.063 回答
0

显然是因为 jquerymobile 的 ajax 导航模型

http://jquerymobile.com/test/docs/pages/page-scripting.html

于 2012-06-02T19:55:39.947 回答
0

像这样使用

window.alert("This is alert");

window.document.location.href="mypage.html";

当您单击确定按钮时出现警报时,您将被重定向到所需的页面。

于 2014-02-05T18:13:10.963 回答