我有一个独立的JavaScript,可以绘制图表。
<script type="text/javascript" src="/GraphicalPortlet-portlet/js/amcharts.js"></script>
<script type="text/javascript" src="/GraphicalPortlet-portlet/js/raphael.js"></script>
<script type="text/javascript">
var chart;
var chartData = [
{country:"Tâches",a:25}, //this is the chart data
{country:"UK",a:25},
{country:"Fran\u00E7ais ",a:25 } ];
window.onload = function() {
chart = new AmCharts.AmSerialChart();
chart.dataProvider = chartData;
chart.categoryField = "country";
var graph = new AmCharts.AmGraph();
graph.labelText="[[value]]";
graph.valueField = "a";
graph.type = "column";
//some other components
var valAxis = new AmCharts.ValueAxis();
valAxis.stackType = "regular";
valAxis.gridAlpha = 0.1;
valAxis.axisAlpha = 0;
chart.addValueAxis(valAxis);
var catAxis = chart.categoryAxis;
catAxis.gridAlpha = 0.1;
catAxis.axisAlpha = 0;
catAxis.gridPosition = "start";
//this is the actual plotting of graph
chart.write("chartdiv");
}
我的问题
1)如何为这个JS编写JSTL代码,以便其他JSP可以包含我的JSTL,并为它们绘制图形。
2)如果客户端需要发送数据而不使用我的虚拟数据。我该怎么做才能改变我的JSTL?
整个想法是不同的JSP不应该复制我的JS代码。相反,只需要包含一个JSTL标签的衬里就可以获得这个JS代码。
答案 0 :(得分:1)
你的问题令人困惑。看起来你正在将JSTL与其他东西混合在一起。请阅读our JSTL wiki page以了解实际的内容。
据我了解,功能要求是您需要向JavaScript提供服务器端变量。这可以通过多种方式完成。
让JSP将其打印为全局JS变量:
<script>var data = ${someDataInJSONFormat};</script>
预处理servlet准备了${someDataInJSONFormat}
:
request.setAttribute("someDataInJSONFormat", someDataInJSONFormat);
让你的JS在窗口加载时访问它:
window.onload = function() {
doSomethingWith(data);
}
让JS通过Ajax检索它:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var data = eval('(' + xhr.responseText + ')');
doSomethingWith(data);
}
}
xhr.open('GET', 'someServletURL', true);
xhr.send(null);
其中someServletURL
是返回数据的servlet的URL:
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(someDataInJSONFormat);
您可以使用JSON库(例如Gson)将Java对象转换为JSON字符串。