JSF2.0显示动态图像数组

时间:2012-11-15 12:34:16

标签: java jsf java-ee jsf-2 primefaces

我有一个应用程序调用一个服务,该服务返回一个Json字符串,其中大约有十个图像作为字节数组。我遍历Json字符串并拉出图像并将它们转换为StreamedContent并将它们放入一个对象中,然后使用具有该图像的图像和名称的对象填充List。我试图在带有PrimeFaces标签的JSF页面中显示这些图像,但图像没有显示。我的代码如下:

ImageBackingBean

    private String sku;
private StreamedContent image;
private List<ImageBackingBean> imageList;

public String getSku(){
    return sku;
}
public void setSku(String sku){
    this.sku = sku;
}
public StreamedContent getImage() {
    FacesContext context = FacesContext.getCurrentInstance();
    if(context.getRenderResponse()){
        return new DefaultStreamedContent();
    }else{
        String id = context.getExternalContext().getRequestParameterMap().get("sku");
        List<ImageBackingBean> list = getImageList();
        for(ImageBackingBean bean : list){
            if(bean.getSku().equalsIgnoreCase(id)){
                return bean.getImage();
            }
        }
    }
    return image;
}
public void setImage(StreamedContent image) {
    this.image = image;
}

public List<ImageBackingBean> getImageList(){
    return imageList;
}

public void setImageList(List<ImageBackingBean> imageList){
    this.imageList = imageList;
}

public String getImageFromDatabase() throws IOException{
    setImageList(DBImages.getImages());
    if(getImageList() == null){
        return "error";
    }
    return "success";
}

我的JSF页面很简单,如下所示:

                <h:dataTable var="items" value="#{imageBackingBean.imageList}">
                <h:column>
                    <p:graphicImage value="#{items.image}">
                        <f:param name="sku" value="#{items.sku}" />
                    </p:graphicImage>
                </h:column>
            </h:dataTable>

我在网上看到的一切都告诉我这是我需要显示动态图像的方式。我不应该将图像存储为列表中的StreamedContent类型吗?

0 个答案:

没有答案