我想创造出可以像使用的组件:如何实现绘制图表的自定义JSF组件?
<mc:chart data="#{bean.data}" width="200" height="300" />
其中#{bean.data}
返回某些对象或图表模型对象或者别的什么东西可以表示为一个图表的集合(把它简单,让我们假定它返回一个整数集合)。
我想这个组件生成HTML这样的:
<img src="someimg123.png" width="200" height="300"/>
的问题是,我有一个可以接收数据并返回图像,像一些方法:
public RenderedImage getChartImage (Collection<Integer> data) { ... }
我也有一个零件用于绘制动态图像:
<o:dynamicImage width="200" height="300" data="#{bean.readyChartImage}/>
这个组件生成HTML就像我的需要,但它的参数是一个字节或RenderedImage的,即它需要方法bean
像这样的数组:
public RenderedImage getReadyChartImage() { ... }
所以,一个方法是使用上提交设置数据propertyChangedListener
(Collection<Integer>
)绘制图表,然后使用<o:dynamicImage />
组件。但是我想创建一个接收数据并绘制图表的我自己的组件。
我使用的是小面,但它的确不是那么重要。任何想法如何创建所需的组件?
P.S.我考虑的一个解决方案是不使用<o:dynamicImage/>
并使用一些servlet来流式传输图像。但我不知道如何正确地实现这一点,如何才能将JSF组件与servlet和如何保存已建成图表图像等等(每个请求会导致恕我直言性能问题产生新的相同的图像)..
我能够做只是因为我想一个自定义组件(我缺乏关于JSF的自定义组件的一些知识,但我今天得到了它)。但是,您的建议仍然非常有帮助,我将在明天使用它来完成另一项任务。 – Roman 2010-04-28 22:30:19
不客气。 – BalusC 2010-04-28 22:35:06