2011-06-24 14 views
0

我有一系列JSP,每個JSP都包含一個scriptlet,用於使用Google的Chart Tools生成可視化代碼。這些在運行時動態調用以顯示可視化。 以下編輯的代碼是典型:如何將scriptlet寫入文件?

<-- 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 --> 

此的scriptlet產生的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); 

等等,使得該請求能夠被製成谷歌呈現在運行時的可視化。

但我的問題需要上述是一個稍微不同的方向,即如果我想將上述的輸出轉移到一個.html文件,該文件可以存儲在文件系統中,然後合併到稍後做出的JSP請求中?

任何人都可以建議什麼可能是一種有用的方式來做到這一點?我現在唯一能想到的就是在Java代碼中生成HTML和嵌入式JavaScript,並將輸出寫入文本文件,例如,

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的輸出轉移到文件系統而不是客戶端瀏覽器?

謝謝

摩根先生。

回答

0

我假設你想要JSP的原因是因爲你想要一個模板。

看看freemarker,它更符合你想要做的目的。 http://freemarker.sourceforge.net/

您可以使用JSP嗎?是的,您可以使用Jasper編譯器將JSP編譯爲Java類(http://tomcat.apache.org/tomcat-5.5-doc/jasper/docs/api/org/apache/jasper/compiler/Compiler.html) 您現在有一個java servlet,您可以在其上調用service或doGet方法,並在其中傳遞ServletResponse實現,其中getOutputStream()返回文件流。

+0

Freemarker聽起來很有趣,所以我會看看它。它可能提供了一個替代我的更基於奎因的方法。 –