【问题标题】:jQuery not displaying on JSP page when called from servlet从 servlet 调用时,jQuery 不显示在 JSP 页面上
【发布时间】:2011-03-30 21:56:20
【问题描述】:

您好,我是 jQuery 的新手,正在尝试将一个简单的 jQuery 选项卡组件添加到从 servlet 调用的现有 jsp 页面中。 如果我直接访问该页面,则会出现 jQuery 组件,但是当从 servlet 调用该页面时,该页面会显示,但 jQuery 效果不起作用。看来 jQuery 永远不会被调用。

示例代码如下:

我只是得到以下而不是标签效果

*Tabs

    * First
    * Second
    * Third

This is tab one
This is tab two.
This is tab three*

谁能帮忙,我已经在网上搜索了几天寻找答案,但没有任何运气。任何帮助将不胜感激

我添加了一个弹出窗口,当页面直接从浏览器调用时出现,但当页面从 servlet 调用时不会被调用

TestServlet

public class SBServlet extends HttpServlet {

    public SBServlet()
    {
        super();
    }  


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {

        // redirecting to test.jsp
        getServletContext().getRequestDispatcher("/JSP/test.jsp").forward(request,response);        

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
          doPost(request, response);    
    }


}

test.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link type="text/css" href="../css/hot-sneaks/jquery-ui-1.8.10.custom.css" rel="stylesheet" />  
<script type="text/javascript" src="../js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../js/jquery-ui-1.8.10.custom.min.js"></script>
<script type="text/javascript">

$(document).ready(function() {
    alert('jQuery is accessible');
    $("#tabs").tabs();
  });


</script>


<title>Jquery test</title>
</head>
<body>

<h2 class="demoHeaders">Tabs</h2>
  <div id="tabs">

    <ul>
      <li><a href="#tabs-1">First</a></li>
      <li><a href="#tabs-2">Second</a></li>
      <li><a href="#tabs-3">Third</a></li>
    </ul>

      <div id="tabs-1">This is tab one</div>
      <div id="tabs-2">This is tab two.</div>
      <div id="tabs-3">This is tab three</div>
  </div>
</body>
</html>

【问题讨论】:

  • 当您从 servlet 调用 jquery 时,您能否验证它是否正在加载?会不会是你的 jquery 路径变了?
  • 我不认为 jquery 正在加载。如果我直接调用页面,弹出窗口永远不会被调用
  • 正常调用与使用 servlet 调用时的 URL 是什么样的?
  • 嗯,我使用的是 tomcat 服务器,所以它的 localhost:8080/Test/JSP/test.jsp 可以用 jQuery 显示。从 servlet 我调用初始 jsp 文件,该文件调用 servlet 转发到 test.jsp。网址是localhost:8080/Test/SBServlet?handler=login
  • 好的,所以当您调用服务器时,浏览器 URL 是否会在重定向到 localhost:8080/Test/JSP/test.jsp 时更改?还是保留为localhost:8080/Test/SBServlet?handler=login

标签: jquery jsp servlets


【解决方案1】:

嗯,我使用的是 tomcat 服务器,所以它的 localhost:8080/Test/JSP/test.jsp 可以用 jQuery 显示。从 servlet 我调用初始 jsp 文件,该文件调用 servlet 转发到 test.jsp。 URL 是 localhost:8080/Test/SBServlet?handler=login

您已声明相对于当前请求 URL 的脚本 URL。

<script type="text/javascript" src="../js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../js/jquery-ui-1.8.10.custom.min.js"></script>

如果您使用例如Firebug 调试过HTTP 流量,您会注意到在servlet URL 上,脚本是从http://localhost:8080/js/jquery-1.4.4.min.jshttp://localhost:8080/js/jquery-ui-1.8.10.custom.min.js 加载的,这两个显然都返回了一个404 页面未找到。

您想从上下文路径/Test 加载它们。您需要修复脚本 URL,使其相对于域根目录而不是当前请求 URL。

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-ui-1.8.10.custom.min.js"></script>

这将在生成的 HTML 中结束

<script type="text/javascript" src="/Test/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="/Test/js/jquery-ui-1.8.10.custom.min.js"></script>

【讨论】:

  • 这很奏效。非常感谢您的所有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
相关资源
最近更新 更多