如何在JSF中运行D3JavaScript

如何在JSF中运行D3JavaScript,javascript,jsp,jsf,d3.js,Javascript,Jsp,Jsf,D3.js,我遵循本教程了解如何将Javascript与JSP集成: 基于此,我想在JSF项目中的JSP文件中添加d3javascript库。这是我的JSP文件: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <

我遵循本教程了解如何将Javascript与JSP集成:

基于此,我想在
JSF
项目中的
JSP
文件中添加
d3javascript库。这是我的
JSP
文件:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!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">
<title>Insert title here</title>
</head>
<body>
<f:view>
<script type="text/javascript" src="d3/d3.v3.js"></script>
<script>
var dataset = [0,5,10,15,20];
            d3.select("body").selectAll("p") 
           .data(dataset)
           .enter()
           .append("p")
           .text("Paragraph");
</script>
</f:view>
</body>
</html>

在此处插入标题
var数据集=[0,5,10,15,20];
d3.选择(“主体”)。选择全部(“p”)
.数据(数据集)
.输入()
.附加(“p”)
.文本(“段落”);

我已经从Eclipse导出了
WAR
文件,并将其部署在
Tomcat6
中。我还将
D3
库文件夹
(D3.v3)
包含在Tomcat中部署的JSF项目中。当我插入
localhost:8080
的URL时,不幸的是,它没有显示预期的结果。可以在JSP文件中运行D3JavaScript库吗?这个特定的代码有什么问题吗?据我所知,JSP在服务器端运行,Javascript在web浏览器上运行。谁能告诉我如何在JSP中运行D3JavaScript。提前感谢您的帮助

我建议首先使用本地/静态json/csv数据使用JSFIDLE(或本地html)测试页面。将html转换为JSF不会那么困难,解决其他javascript问题也会更容易。

使用浏览器的开发工具帮助您确定是否正在加载d3.js。例如,在Chrome浏览器中,右键单击(或按住Ctrl键单击)浏览器窗口中的任意位置,选择“检查元素”,然后打开“网络”选项卡以查看页面加载的资源。如果没有加载d3.js,则需要调整此行中的路径:

<script type="text/javascript" src="d3/d3.v3.js"></script>

正如Bill F.在对其答案的评论中所说,d3.js需要作为UTF-8加载。 如果由于某种原因无法更改页面本身的字符集,可以通过UTF-8加载javascript文件,方法是将
charset=“UTF-8”
参数添加到脚本标记中,如

<script type="text/javascript" charset="UTF-8" src="d3/d3.v3.js"></script>


当然,在为页面提供服务时,您仍然需要检查服务器是否会在
内容类型
响应标题中添加
字符集
,覆盖脚本标记中的声明,从而破坏您的一天。

我正在使用Firefox。老实说,我试过网络控制台。它告诉我d3没有定义。特别是,它向我显示了一个错误,行是d3。选择(…)Ok,这可能意味着浏览器没有加载d3。你确定你在脚本标签中找到了正确的路径吗。我在Web内容中有D3文件夹,该文件夹位于部署在Tomcat中的项目中。我还有一个问题,就是d3.v3.js Library中的非法字符与Firefox中的Inspect,我有一条消息:请求URL:请求方法:获取状态代码:HTTP/1.1 304未修改该问题是编码问题吗?见: