在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的方式,要么不管怎样都没有加载资源。我的资源文件夹在配置文件中声明:
<resources mapping="/resources/**" location="/resources/" />
我三重检查了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}">
与
<script type="text/javascript" src="/resources/scripts/d3.js">
我在Chrome控制台中获得Failed to load resource: the server responded with a status of 404 (Not Found)
该行。
解决:我的坏。从资源位置删除前导斜杠后,它工作正常! value="resources/scripts/d3.js"
。考虑到明确指出资源根目录,我仍然不明白为什么会影响结果。
答案 0 :(得分:0)
解决方案是从JSP标头中的资源位置删除前导斜杠。此外,charset应指定为“utf-8”,以便d3.js正确加载:
<script charset="utf-8" type="text/javascript" src="resources/scripts/d3.js">