PF的graphicImage不呈现

时间:2011-06-26 12:53:50

标签: jsf primefaces

我正在使用JSF / PF anf我无法使graphicImage工作。回顾在论坛上发布的大量主题,这个PF的graphicImage似乎非常棘手。我显然做错了,但是,只要我复制的代码对其他人起作用(见帖子),它必须是组件环境中的东西。我希望在这里找到解决方案,我已经坚持数周了。感谢

这是我在PF论坛中的原始问题:

我在渲染图像时遇到问题。我已经按照说明的代码进行了操作,并且我正确地检索了要在单独的方法中显示的图像的ID:

public StreamedContent getStreamedImage() {

        StreamedContent streamedImage = null;
                UIViewRoot uiRoot = FacesContext.getCurrentInstance().getViewRoot();

        System.out.println(uiRoot.getClientId());

        UIComponent component = FacesContext.getCurrentInstance().getViewRoot().findComponent("itemDataForm:imagesTbl:itemImgComp");
        Map attributes = component.getAttributes();
        Integer image_id = (Integer)attributes.get("item_img_id");

        if(image_id != null && editionItem != null && editionItem.getImages() != null){
            for(ItemImageView img : editionItem.getImages()){
                if(image_id.intValue() == img.getId()){
                    streamedImage = new DefaultStreamedContent(new ByteArrayInputStream(img.getImage()), "image/jpeg");
                }
            }
        }else{
            streamedImage = new DefaultStreamedContent(new ByteArrayInputStream(editionItem.getImages().get(0).getImage()), "image/jpeg");
        }
.......

我无法检索(总是为空),所以我尝试了属性,它的工作原理。因此,DefaultStreamContent被加载,由图像根本不渲染。我的xhtml代码:

<p:dataTable id="imagesTbl" var="itemImg" value="#{itemEditionBean.editionItem.images}">
                                        <p:column>
                                            <h:panelGrid columns="1">
                                                <h:outputText value="#{itemImg.id}"/>
                                                <p:graphicImage id="itemImgComp" value="#{itemEditionBean.streamedImage}">
                                                    <f:attribute name="item_img_id" value="#{itemImg.id}"/>
                                                </p:graphicImage>
                                            </h:panelGrid>
                                        </p:column>
                                    </p:dataTable>

与上述主题中的代码完全相同。 PS:我在一个标签中包含了mt dataTable。可能依赖于封闭的组件,形式,还是什么?

可以在以下链接中查看来自其他相关主题的大量代码:

http://forum.primefaces.org/viewtopic.php?f=3&t=4163&p=39751

1 个答案:

答案 0 :(得分:2)

根据我在building dynamic images上找到的另一个页面,我应该使用<f:param .../>getStreamedImage()方法而不是<f:attribute .../>提供参数。您使用的是ConversationScoped支持bean吗?我有同样的problem displaying dynamic images,但发现有一个problem using them with ConversationScoped beans。我将我的支持bean切换到Session范围,现在它可以正常工作。