2013-01-16 32 views
0

我有一个jsp页面,其中包含两个文本字段开始日期和结束日期。用户将输入开始日期和结束日期,然后我将在数据库中查询这些日期之间的数据。当我点击提交时,它只会将其转发到当前页面,我会将日期作为参数传递。到目前为止这么好,但问题是图像jfreechart不刷新,除非我刷新浏览器本身。JFreeChart图像不刷新在JSP

这是我的表格。

<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 ] 

回答

2

你必须改变周围的相当显着的东西来获取图像与页面内刷新当你点击View,你最终会编写JavaScript

公平的位

基本上就是有发生(这是相当高的水平)

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

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

这是一个很大的步骤,我真的不能进入实施的细节问题不知道一大堆更多关于您的设置,但希望这将只是你指出正确的方向

+1

感谢我传递图表参数中的开始日期和结束日期。喜欢这个。 http://stackoverflow.com/questions/13092729/adding-graph-chart-to-a-buffer/13093044#13093044 – jantox