我想创建一个可以像这样使用的组件:
<mc:chart data="#{bean.data}" width="200" height="300" />
where#{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 />
组件。但我想创建自己的组件来接收数据并绘制图表。
我正在使用facelets,但它确实不是那么重要。任何想法如何创建所需的组件?
PS 我正在考虑的一个解决方案是不使用<o:dynamicImage/>
和使用一些 servlet 来流式传输图像。但我不知道如何正确实现它以及如何将 jsf 组件与 servlet 绑定以及如何保存已经构建的图表图像(为每个请求生成新的相同图像可能会导致性能问题恕我直言)等等。