我有一个应用程序调用一个服务,该服务返回一个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类型吗?