我有一个servlet,它使用requestdispatcher()向我的一个jsp页面执行转发
request.getRequestDispatcher("/WEB-INF/view/mypage.jsp").forward(
request, response);
目标 mypage.jsp 有一些jquery的好处,需要做一些显示/隐藏的东西,但由于某种原因,jspery显示jsp时没有被触发从servlet转发后,但是当我通过地址栏直接访问页面时(我将页面放在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>
答案 0 :(得分:1)
问题可能在于您访问mypage.jsp的方式。由于它位于/ WEB-INF文件夹中,因此无法从浏览器直接访问。如果它仍在/ WEB-INF文件夹中,我认为你不能通过地址栏直接访问该页面。
如果你从外部/ WEB-INF访问它并且它可以工作但是在你的servlet转发请求之后它没有,最可能的原因是你的JSP页面在它被发送到浏览器后尝试加载某些东西并且服务器拒绝为它提供服务 - 也许该资源也在/ WEB / INF中。您还可以找到有用的this链接。
答案 1 :(得分:0)
如果您在直接或间接访问时访问该页面并查看源代码,我认为您会发现问题。使用文件差异工具比较两个输出。很可能你没有在其中一个版本中包含一些JavaScript,或者间接访问时jquery.js库的相对路径不正确。
答案 2 :(得分:0)
RequestDispatcher是一个重定向,其工作方式类似于包含工作方式,因此您的页面可能正在提供,但静态文件将无法访问,因为前端请求它们。
将您的js文件移出WEB-INF,CSS和图像。
答案 3 :(得分:0)
显然是因为jquerymobile的ajax导航模型
答案 4 :(得分:0)
像这样使用
window.alert("This is alert");
window.document.location.href="mypage.html";
当您点击“确定”按钮时出现警报,您将被重定向到所需的页面。