0

Start Date と End Date の 2 つのテキスト フィールドを含む JSP ページが 1 つあります。ユーザーは開始日と終了日を入力し、それらの日付の間のデータをデータベースに照会します。[送信] をクリックすると、現在のページに転送され、日付がパラメーターとして渡されます。これまでのところ問題はありませんが、問題は、ブラウザー自体を更新しない限り、画像 jfreechart が更新されないことです。

これが私のフォームです。

  <form method="GET" action='monitor' name="check">
  <table>
  <tr>
  <td>Start Date (dd/MM/yyyy format):</td>
  <td><input type="text" name="startDate"
  value="<%=startDate%>"></td>
  </tr>
  <tr>
  <td>End Date (dd/MM/yyyy format):</td>
  <td><input type="text" name="endDate" value="<%=endDate%>"></td>
  </tr>
  <tr>
  <td><input type="submit" value="check"></td>
  </tr>
  </table>
  </form>

  <img src="lineChart.png" width="600" height="400" border="0" usemap="#chart" />

チャートを生成するためのインラインコードは次のとおりです

   final File file1 = new File(getServletContext().getRealPath(".") + "/lineChart.png");
   ChartUtilities.saveChartAsPNG(file1, chart, 600, 400, info);

writeChartAsPNG を実行しようとしましたが、ページ全体が上書きされます。ページは引き続き次のようになります。

Start Date:
End Date: 

[ VIEW ] 

Monitor Data Chart
[  chart here ]
4

1 に答える 1

2

をクリックしたときにページ内で画像を更新するには、かなり大幅に変更する必要があり、最終的にかなりの量Viewの JavaScript を記述することになります

基本的に何が起こらなければならないか (これはかなり高レベルです)

  1. Viewフォームで送信する代わりに、通常のボタンを作成します。
  2. クリック リスナーをビュー ボタンにアタッチします (クリック機能については、 jQuery のドキュメントを参照してください)。
  3. リスナー内で、開始日と終了日の入力から値を取得します
  4. 画像の src 属性を (この SO answer のようなメカニズムを使用して) jsp またはサーブレットに設定し、開始日と終了日を get 変数として送信します (次のようなクエリ文字列で)?startdate= ... &enddate= ...
  5. そのjspまたはサーブレットで、グラフを生成し、jFreeChartからの生のpng出力をimage/png(使用response.setContentType("text/png"))のコンテンツタイプで返します。これにより、img タグ内の画像が正しく表示され、ファイルをディスクに書き出す必要もなくなります。

このプロセスは、 を押すたびViewに、フォームに入力した値で画像を更新します。

それは多くのステップであり、セットアップについてもっと多くのことを知らずに実装の核心に入ることができませんが、これが正しい方向に向けられることを願っています.

于 2013-01-16T04:49:33.250 に答える