3

我已经搜索过这个但找不到任何东西。如果英文不正确,请更正我的问题。

这是我的代码: 编辑:代码在我的 .jsp 文件中!

    function drawChart() {
    var data = google.visualization.arrayToDataTable([
        ['Beoordeling', 'Stage Opleider', 'Student'],

        ['1', '1', '4'],

        <% ArrayList < Stelling > alleStellingenLijst2 = new ArrayList < Stelling > ();
        alleStellingenLijst2 = (ArrayList < Stelling > ) request.getAttribute("stellingen");
        for (Stelling s: alleStellingenLijst2) {
            out.println("['1', '" + s.getDeStelling() + "' , '" + s.getDeWaarde() + "'],");
        } %> ]);
    var options = {
        title: 'Laatste competenties',
        hAxis: {
            title: 'Score',
            titleTextStyle: {
                color: 'green'
            }
        },
        vAxis: {
            title: 'Beoordeling nummer',
            titleTextStyle: {
                color: 'green'
            }
        },
        // Allow multiple simultaneous selections.
        selectionMode: 'multiple',
        colors: ['#BEF781', 'green']
    };
    var chart = new      google.visualization.BarChart(document.getElementById('chart_div'));
    chart.draw(data, options);
}

由于某种原因,它不会执行 <% %> (来自jsp)之间的代码。

此页面在线:http ://project-omega.appspot.com/grafieken.jsp 谷歌应用引擎日志说错误在我页面的最后一行。这是一个空指针异常。

我不知道这意味着什么,我真的希望有人可以帮助我。

非常感谢,对不起我的英语。

编辑 呈现的输出如下所示

  function drawChart() {
    var data = google.visualization.arrayToDataTable([                                               
      ['Beoordeling', 'Stage Opleider', 'Student'],
      for (Stelling s : alleStellingenLijst2) {
        out.println("['1', '" + s.getDeStelling() + "' , '" + s.getDeWaarde() + "'],");       
    }  
  ]);

新代码:

 function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Beoordeling', 'Stage Opleider', 'Student'],

          ['1', 1, 4],

          <%

            ArrayList<Stelling> alleStellingenLijst2 =(ArrayList<Stelling>) getServletContext().getAttribute("stellingen");
            for (Stelling s : alleStellingenLijst2) {
                out.println("['1', " + s.getDeStelling() + " , " + s.getDeWaarde() + "],");       
            }   
        %> 
        ['2', 2, 2]
        ]);
4

2 回答 2

4

这些是 JSP 标记,您不能在 JavaScript 中使用它们!

这是因为 JSP 文件在编译过程中被编译为 .java 类,而 JavaScript 是在客户端执行的。

你可以做相反的事情——在 JSP 文件中生成一个 JavaScript 代码,这样你就可以将一些你想要的数据传递给 JS 变量。

于 2013-10-31T13:36:13.940 回答
1

我想你还没有设置stellingen请求属性。在将请求转发到 jsp 之前,通常在 servlet 中设置请求属性:

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
    ArrayList<Stelling> list = ...;
    req.setAttribute("stellingen", list);
    req.getRequestDispatcher("/grafieken.jsp").forward(req, resp);
}

还要确保在 JSP 代码中设置了该属性:

<%
List<Stelling> stellingen = (List<Stelling>) getServletContext().getAttribute("stellingen");
if(stellingen == null) {
    out.println("stellingen attribute not set!");
}else{
    for (Stelling s : stellingen) {
        out.println("['1', " + s.getDeStelling() + " , " + s.getDeWaarde() + "],");       
    }   
}
%> 
于 2013-10-31T13:40:30.997 回答