0

我有一个 jsp 页面,其中包含两个文本字段开始日期和结束日期。用户将输入开始日期和结束日期,然后我将在数据库中查询这些日期之间的数据。当我点击提交时,它只会将其转发到当前页面,我会将日期作为参数传递。到目前为止一切顺利,但问题是图像 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. 在侦听器中,从 Start Date 和 End Date 输入中获取值
  4. 将图像的 src 属性(使用类似于此 SO 答案的机制)设置为 jsp 或 servlet,将开始和结束日期作为 get 变量发送(在查询字符串中,例如?startdate= ... &enddate= ...
  5. 在该 jsp 或 servlet 中,生成图表并返回来自 jFreeChart 的原始 png 输出,内容类型为image/png(use response.setContentType("text/png"))。这将正确显示 img 标签中的图像,您也不必将文件写入磁盘。

此过程将在您每次点击时更新图像View,并使用您输入表单的值。

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

于 2013-01-16T04:49:33.250 回答