2011-12-08 27 views
1

我有一个独立的JavaScript,可以绘制一张图。为JavaScript编写JSTL代码

<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)我怎么能写这样的JSTL代码JS让对方JSP的可以包括我的JSTL和图形将被绘制它们。

2)如果客户端需要发送数据而不使用我的虚拟数据。我会如何去改变我的JSTL?

整个想法是,不同的JSP不应该复制我的JS代码。取而代之的是只包含一个JSTL标签,这个标签有这个JS代码。

+1

您可以轻松地将js文件包含在JSP文件中。你基本上只包含像包含其他JavaScript文件一样的文件。现在为了发送数据,您需要某种形式发送GET请求或POST请求。然后你可以在你的JavaScript文件中设置变量,你可以使用for循环或其他来获取参数。 – Matt

+0

@Matt感谢提醒我可以很容易地将我的JS包含在其他地方。 您可以介绍一下JSP如何将变量发送到我的JS库吗?任何psedo代码或鳕鱼链接? –

回答

1

你的问题很混乱。看起来你正在把JSTL和其他东西混合在一起。请阅读our JSTL wiki page以了解它实际上是是。

据我所知,功能要求是你需要提供服务器端的变量到JavaScript。这可以通过几种方式完成。

  1. 让JSP打印为全局JS变量:

    <script>var data = ${someDataInJSONFormat};</script> 
    

    ${someDataInJSONFormat}是编写了预处理的servlet:

    request.setAttribute("someDataInJSONFormat", someDataInJSONFormat); 
    

    而且让JS访问它的窗口负荷:

    window.onload = function() { 
        doSomethingWith(data); 
    } 
    
  2. 让JS阿贾克斯检索:

    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是URL到返回数据一个servlet:

    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    response.getWriter().write(someDataInJSONFormat); 
    

您可以使用JSON库如Gson转换将Java对象转换为JSON字符串。