动态图表生成/从JSF 1.2将对象传递给Servlet

问题描述:

我正在尝试使用JFreeChart库动态生成图表并将它们显示给前端用户。我的项目使用JSF 1.2作为其视图技术,我们正在尝试确定显示BufferedImage的策略。动态图表生成/从JSF 1.2将对象传递给Servlet

到目前为止,最好的选择似乎是使用servlet生成图并使用h:graphicImage指向该位置。主要的问题是,如何将JSF中的对象传递给servlet,以便根据对象中的值生成动态图形?

让JSF沿自动生成的唯一键将它放入会话中,将该键作为请求参数或pathinfo传递给servlet,最后让servlet通过键将其从会话中删除并使用它。

JSF豆(时init或操作方法):

this.key = UUID.randomUUID().toString(); 
externalContext.getSessionMap().put(key, object); 

JSF视图:

<h:graphicImage value="servleturl?key=#{bean.key}" /> 

的Servlet:

String key = request.getParameter("key"); 
Object object = request.getSession().getAttribute(key); 
request.getSession().removeAttribute(key); 
// ... 
+0

该解决方案对我们的方案来说可能是最好的,并且在我们进行第一次测试后工作得非常快。我们需要在可用于生成图形图表的对象中保存一组数据。这些数据不适合作为URL参数的一部分传递,因此我们需要留意会话中存储的内容,以便我们可以保持精简。 – rynmrtn 2011-01-22 03:25:05

+0

不客气。 – BalusC 2011-01-22 03:25:37

个人而言,我宁愿通过将数据作为因为这样可以避免依赖服务器状态并使图表服务易于外部化。但是,如果您的数据集很大,则可能遇到一些practical limitations