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

时间:2011-01-06 00:44:29

标签: java jsf servlets

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

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

2 个答案:

答案 0 :(得分:4)

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

JSF bean(在init或action方法期间):

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);
// ...

答案 1 :(得分:2)

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