在JSP中没有刷新JFreeChart图像

时间:2013-01-16 04:31:31

标签: java jsp jfreechart

我有一个jsp页面,其中包含两个文本字段Start Date和End Date。用户将输入开始日期和结束日期,然后我将在数据库中查询这些日期之间的数据。当我点击提交时,它会将它转发到当前页面,我会将日期作为参数传递。到目前为止一切都那么好,但问题是图像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 ]

1 个答案:

答案 0 :(得分:2)

当你点击View时,你将不得不改变相当大的东西以使图像在页面内刷新,你最终会写出相当多的javascript

基本上必须发生的事情(这是相当高的水平)

  1. 使View成为常规按钮,而不是在表单上提交。
  2. 将点击监听器附加到视图按钮(查看jQuery documentation的点击功能)
  3. 在侦听器内,从“开始日期”和“结束日期”输入中获取值
  4. 将图像的src属性(使用机制like in this SO answer)设置为jsp或servlet,将开始日期和结束日期作为get变量发送(在查询字符串中,如?startdate= ... &enddate= ...
  5. 在该jsp或servlet中,生成图表并从jFreeChart返回原始png输出,其内容类型为image/png(使用response.setContentType("text/png"))。这将正确显示img标签中的图像,您也不必将文件写入磁盘。
  6. 此过程会在您每次点击View时使用您在表单中输入的值更新图片。

    这是很多步骤,如果不了解更多关于你的设置的话,我无法深入了解实施的细节,但希望这会指出你正确的方向