【问题标题】:How to send data from struts2 to a javascript function to draw a chart如何将数据从 struts2 发送到 javascript 函数以绘制图表
【发布时间】:2014-11-11 08:40:53
【问题描述】:

我需要将动态图表添加到我的 web 应用程序中。 我选择了 chartjs 作为库(用于折线图) 在创建包含图表的页面并定义从数据库中检索数据的操作后,我在将数据从操作发送到生成折线图的脚本时遇到了一些问题。

servlet 给出一个 Bean 的 ArrayList 作为输出

@Action(value="/graphDataFetcher")
public String execute(){
    //Connessione a database 
    DBUtility database= new DBUtility(); 
    Connection connessione=database.getConnected();
    listamusei=database.getMusei(connessione);
    //Recupero in liste di musei e mostre correlate
    for(Museo ms: listamusei){
        mostre=new ArrayList<Mostra>();
        mostre=database.getMostraInMuseo(String.valueOf(ms.getId()), connessione);
        ms.setMostre(mostre);
    }
    //Disconnessione da database
    database.getDisconnected();
    return "ok";
}

这是“规则”图表的脚本,我想将 bean 的属性设置为 value1、value2、value3.. 等等。

<script>
    var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
    var lineChartData = {
    labels : ["January","February","March","April","May","June","July"],
        datasets : [
        {
            label: "My First dataset",
            fillColor : "rgba(220,220,220,0.2)",
            strokeColor : "rgba(220,220,220,1)",
            pointColor : "rgba(220,220,220,1)",
            pointStrokeColor : "#fff",
            pointHighlightFill : "#fff",
            pointHighlightStroke : "rgba(220,220,220,1)",
            data : [value1, value2, value3, value4]
         },
         ]
    }
    window.onload = function(){
    var ctx = document.getElementById("canvas").getContext("2d");
    window.myLine = new Chart(ctx).Line(lineChartData, {
    responsive: true
    });
}
</script>

有人知道如何解决这个问题吗?

【问题讨论】:

  • 所以你有 List 包含 List...你到底想打印什么为“value1, value, etc”?旁注:这是一个动作,而不是一个 servlet(完全不同)

标签: java javascript charts struts2 chart.js


【解决方案1】:

您可以通过两种方式使用 1. 使用 setter、getter 生成一个列表并在此列表中添加数据。在 jsp 页面中使用 strcts 标记库,在 javascript 变量中放置列表数据。然后使用类似

的数据调用 chartjs 库函数
<script type="text/javascript">
var a = new Array();
<s:iterator var="newsVar" value="newsList" status="newsStatus">
a[<s:property value="#newsStatus.index"/>]='<s:property value="id"/>';
</s:iterator>
$(document).ready(function(){
 chartjsfunction(a);
});
</script>
  1. 发送 ajax 调用数据以执行操作并将数据发送到 chartjs 库函数。

【讨论】:

  • 这是肮脏的方式,他可以使用JSON,很容易。
  • 如果我们使用 ajax 调用数据,JSON 是好的。
猜你喜欢
  • 1970-01-01
  • 2013-09-26
  • 2015-10-24
  • 2021-08-23
  • 2018-04-04
  • 1970-01-01
  • 2019-12-04
  • 2017-04-04
  • 2019-07-25
相关资源
最近更新 更多