use*_*882 2 java jsf richfaces
使用下面的代码我无法在网页中获取图像.我不确定我是否以正确的方式理解文档,并且我无法找到此代码的任何问题.
BEAN
@ManagedBean(name = "imageBean")
@RequestScoped
public class ImageBean {
public void paint(OutputStream os, Object data) throws IOException {
BinaryContent content = (BinaryContent) data;
BufferedImage image = ImageIO.read(new ByteArrayInputStream(content.getContent()));
ImageIO.write(image, "jpg", os);
}
}
Run Code Online (Sandbox Code Playgroud)
PAGE
<rich:dataTable value="#{dataProviderBean.aoRequests}" var="item">
<f:facet name="noData">No messages are available.</f:facet>
...
<rich:column>
<f:facet name="header">Image data</f:facet>
<rich:list value="#{item.imageContents}" var="content">
<a4j:mediaOutput element="img" cacheable="false" session="false"
createContent="#{imageBean.paint}" value="#{content}" />
</rich:list>
</rich:column>
</rich:dataTable>
Run Code Online (Sandbox Code Playgroud)
如果将来有人会遇到同样的问题,这是解决方案:
的content投入我value属性是保持一个图像的二进制数据的对象.因为它是在URL中序列化的,所以长度太大而且不起作用.你必须传递一些id并在paint方法中获取对象.
Example
<rich:dataTable value="#{dataProviderBean.aoRequests}" var="item">
<f:facet name="noData">No messages are available.</f:facet>
...
<rich:column>
<f:facet name="header">Image data</f:facet>
<rich:list value="#{item.imageContents}" var="content">
<a4j:mediaOutput element="img" cacheable="false" session="false"
createContent="#{imageBean.paint}" value="#{content.id}" />
</rich:list>
</rich:column>
</rich:dataTable>
Run Code Online (Sandbox Code Playgroud)
BEAN
public void paint(OutputStream os, Object data) throws IOException {
String id = (String) data;
BinaryContent content = (BinaryContent) getContentById(id);
os.write(content.getContent());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9040 次 |
| 最近记录: |