【问题标题】:How to use d3.js in JSP?如何在 JSP 中使用 d3.js?
【发布时间】:2014-12-01 12:41:09
【问题描述】:

在 Spring Web 应用程序中,我正在尝试创建一个虚拟 JSP 页面来构建:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page session="false"%>
<html lang="en">
<head xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:spring="http://www.springframework.org/tags">
<meta charset="utf-8" />
<spring:url value="/resources/scripts/d3.js" var="d3_url" />
<script type="text/javascript" src="${d3_url}">
    <jsp:text />
</script>
<title>A Pagey Page</title>
</head>
<body>
    <h1>Hello world!</h1>
    <P>What up?</P>
    <script type="text/javascript">
        d3.select("body").append("p").text("D3 works!");
    </script>
</body>
</html>

我在页面的标题中加载了 d3.js,没有任何抱怨,所以我假设找到了资源。但是,当我在页面正文中使用 D3 脚本时,我得到“Uncaught ReferenceError: d3 is not defined”。我对调用的语法持肯定态度,因为我已经在一个简单的 HTML 页面中测试了相同的东西并且它有效。

所以,要么这不是在 JSP 页面中使用 D3 的方式,要么不知何故根本没有加载资源。我的资源文件夹在配置文件中声明:

&lt;resources mapping="/resources/**" location="/resources/" /&gt; 和我三重检查了 d3.js 确实在 /resources/scripts 文件夹中。

在JSP中使用d3.js的正确方法是什么?

更新:在 Google Chrome 开发工具中,控制台 d3 无法识别。这导致得出的结论是,尽管没有关于在标题中加载 d3 的警告,但它没有被正确加载。但为什么呢?

更新 2:当我替换时

<spring:url value="/resources/scripts/d3.js" var="d3_url" /> <script type="text/javascript" src="${d3_url}">

&lt;script type="text/javascript" src="/resources/scripts/d3.js"&gt;

我在该行的 Chrome 控制台中收到 Failed to load resource: the server responded with a status of 404 (Not Found)

已解决:我的错。从资源位置删除前导斜杠后,它起作用了! value="resources/scripts/d3.js"。考虑到明确指出了资源根,我仍然不明白为什么这会影响结果。

【问题讨论】:

  • 浏览器的网络流量选项卡是验证脚本是否正确加载的最佳方式。您还可以查看页面的源代码,了解 JSTL 标记注入的实际 URL。
  • Chrome 的网络选项卡是空的,但是当我加载 d3 正常工作的简单 HTML 时,它也是空的。页面来源显示&lt;spring:url value="/resources/scripts/d3.js" var="d3_url" /&gt; &lt;script type="text/javascript" src=""&gt;&lt;/script&gt;
  • @LimboExile,第一次打开它是空的。打开“网络”,刷新页面。
  • 我用解决方案更新了问题。实际上,解决方案并不能清除所有内容。我不知道我应该如何根据 SE 规则处理这个问题。

标签: java javascript spring jsp d3.js


【解决方案1】:

解决方案是从 JSP 标头中的资源位置删除前导斜杠。此外,应将 charset 指定为“utf-8”,以便 d3.js 正确加载:

<script charset="utf-8" type="text/javascript" src="resources/scripts/d3.js">

【讨论】:

  • 或者只是&lt;script src="https://d3js.org/d3.v4.min.js"&gt;&lt;/script&gt;,这样可以避免此类问题并始终为您提供最新版本
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
相关资源
最近更新 更多