【问题标题】:How to use a4j:mediaOutput correctly for displaying images?如何正确使用 a4j:mediaOutput 来显示图像?
【发布时间】:2011-12-02 09:29:24
【问题描述】:

使用下面的代码我无法在网页中获取图像。我不确定我是否以正确的方式理解文档,并且我无法发现此代码有任何问题。

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);
    }
}

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>

【问题讨论】:

    标签: java jsf richfaces


    【解决方案1】:

    如果以后有人遇到同样的问题,这里是解决方案:

    我放入value 属性的content 是一个保存图像二进制数据的对象。因为是在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>
    

    BEAN

    public void paint(OutputStream os, Object data) throws IOException {
        String id = (String) data;
        BinaryContent content = (BinaryContent) getContentById(id);
        os.write(content.getContent());
    }
    

    【讨论】:

      【解决方案2】:

      ImageBean 使用@SessionScoped 或@ApplicationScope https://community.jboss.org/thread/168523

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多