2011-06-24 11 views
0

私は一連のJSPを持っています。それぞれのJSPには、GoogleのChart Toolsを使用して視覚化用のコードを生成するスクリプトレットが含まれています。これらは、視覚化を表示するために実行時に動的に呼び出されます。 次編集したコードが典型的である:Javascriptをスクリプトレットからファイルに書き込む方法は?

<-- 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を生成します。要求は、実行時に可視化をレンダリングするためにGoogleに行うことができるようにように

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

と。

しかし私の質問は上記の出力がファイルシステムに保存され、後で作られたJSPリクエストに組み込まれた.htmlファイルに上記の出力を振り向けたい場合、 ?

これを行うには便利な方法がありますか?私が現時点で考えることができるのは、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の出力をクライアント・ブラウザではなくファイル・システムに振り向けることは可能ですか?

ありがとう

Mr Morgan。

答えて

0

テンプレートが必要な理由でJSPを使用する理由が考えられます。

freemarkerを見てください。あなたがしたいことに目的に合っています。 http://freemarker.sourceforge.net/

JSPを使用できますか?はい、Jasperコンパイラ(http://tomcat.apache.org/tomcat-5.5-doc/jasper/docs/api/org/apache/jasper/compiler/Compiler.html) を使用してJSPをJavaクラスにコンパイルできます。サービスまたはdoGetメソッドを呼び出すjavaサーブレットがあり、getOutputStream()がファイルストリームを返すServletResponse実装を渡します。

+0

Freemarkerは面白そうに聞こえるので、私はそれを見ます。それは私のより多くのQuineベースのアプローチに代わるものを提供するかもしれません。 –

関連する問題