【问题标题】:JFreeChart image not refreshing in JSPJFreeChart 图像在 JSP 中不刷新
【发布时间】:2013-01-16 04:31:30
【问题描述】:

我有一个 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 ]

【问题讨论】:

    标签: java jsp jfreechart


    【解决方案1】:

    当您单击View 时,您必须进行相当大的更改才能使图像在页面内刷新,并且您最终会编写相当多的 javascript

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

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多