Написание кода JSTL для JavaScript - PullRequest
1 голос
/ 08 декабря 2011

У меня есть отдельный 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) как я могу написать код JSTL для этого JS, чтобы другие JSP могли включать мой JSTL, и для них был бы построен график.

2) Если клиенту необходимо отправить данные, а не использовать мои фиктивные данные. Как бы я поступил так и изменил мой JSTL?

Вся идея в том, что разные JSP не должны дублировать мой код JS. Вместо этого просто включите один вкладыш тега JSTL, который будет иметь этот код JS.

1 Ответ

1 голос
/ 08 декабря 2011

Ваш вопрос сбивает с толку.Похоже, вы смешиваете JSTL с чем-то другим.Пожалуйста, прочитайте нашу вики-страницу JSTL , чтобы узнать, что это такое на самом деле .

Насколько я понимаю, функциональное требование заключается в том, что вам необходимо предоставить переменные на стороне серверав JavaScript.Это можно сделать несколькими способами.

  1. Позвольте JSP распечатать его как глобальную переменную JS:

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

    Где ${someDataInJSONFormat} был подготовлен сервлетом предварительной обработки:

    request.setAttribute("someDataInJSONFormat", someDataInJSONFormat);
    

    И пусть ваш JS получает к нему доступ при загрузке окна:

    window.onload = function() {
        doSomethingWith(data);
    }
    
  2. Пусть 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 - это URL сервлета, который возвращает данные:

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

Вы можете использовать библиотеку JSON, такую ​​как Gson , для преобразования объектов Javaв строку JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...