Как написать Javascript из скриптлета в файл? - PullRequest
0 голосов
/ 24 июня 2011

У меня есть серия JSP, каждая из которых содержит скриптлет для генерации кода для визуализации с помощью Google Chart Tools.Они вызываются динамически во время выполнения для отображения визуализаций.Типичный следующий отредактированный код:

    <-- HTML of JSP here -->

    <script type = "text/javascript" src = "http://www.google.com/jsapi"></script>

    <script type = "text/javascript">

       google.load("visualization", "1", {packages:["corechart"]});
       google.setOnLoadCallback(drawChart);

       out.println("data.addRows(" + pv.getNoRows()  + ");");

       function drawChart() {
            var data = new google.visualization.DataTable();

        <%   
            int row = 0;
            List<List<String>> datasetVisData = pv.getDatasetVisData();
            ArrayList<String> datasetVisTemporalAxisLabels = pv.getDatasetVisTemporalAxisLabels();
            for (List<String> list : datasetVisualisationData) {                    
                out.println("data.setValue(" + row + ", " + 0 + ", '" + datasetVisTemporalAxisLabels.get(row) + "');");                   
                for (int column = 0; column < list.size() - 1; column++) {                       
                    out.println("data.setValue(" + row + ", " + (column + 1) + ", " + list.get(column) + ");");
                }
                row++;
            }
        %>
     }

     </script>

     <-- HTML of JSP here -->

Этот скриптлет создает Javascript следующим образом:

data.addRows(2);
data.setValue(0, 0, '22 06 2011 @ 10 00');
data.setValue(0, 1, 10);
data.setValue(0, 2, 10);
data.setValue(0, 3, 10);
data.setValue(0, 4, 15);
data.setValue(0, 5, 10);
data.setValue(1, 0, '22 06 2011 @ 12 00');
data.setValue(1, 1, 5);
data.setValue(1, 2, 4);
data.setValue(1, 3, 3);
data.setValue(1, 4, 2);
data.setValue(1, 5, 2);

И так далее, чтобы можно было сделать запрос в Google на визуализацию при запускевремя.

Но мой вопрос состоит в том, что вышеупомянутое является немного другим направлением, то есть, что, если я хочу перевести выходные данные выше в файл .html, который может быть сохранен в файловой системе и затем включен вЗапрос JSP сделан позже?

Кто-нибудь может подсказать, что может быть полезным для этого?Единственное, о чем я могу думать в данный момент, - это сгенерировать HTML и встроенный Javascript в коде Java и записать вывод в текстовый файл, например,

    System.out.println("<p></form>\n" +
    System.out.println("<p><input type = \"submit\" value = \"Plot options\"></form>\n" +
                       "</fieldset><p>\n<p>&nbsp;</p>");
    System.out.println("<script language = \"javascript\">");
    System.out.println("document.plotcriteria.reset();");
    System.out.println("</script>");

Кто-нибудь может предложить лучшую альтернативу?Можно ли перенаправить вывод JSP в файловую систему, а не в браузер клиента?

Спасибо

Мистер Морган.

1 Ответ

0 голосов
/ 25 июня 2011

Полагаю, вам нужна JSP, потому что вам нужен шаблон.

Взгляните на freemarker, он намного больше соответствует цели и тому, что вы хотите сделать.http://freemarker.sourceforge.net/

Не могли бы вы использовать JSP?да, вы можете скомпилировать JSP в класс Java с помощью компилятора Jasper (http://tomcat.apache.org/tomcat-5.5-doc/jasper/docs/api/org/apache/jasper/compiler/Compiler.html). Теперь у вас есть Java-сервлет, для которого вы вызываете метод service или doGet, передавая реализацию ServletResponse, где getOutputStream () возвращаетПоток файла.

...