我试图显示一个面板,用户可以在其中看到项目类别列表(显示为图像),单击时他们可以查看类别中的产品(将显示图像)
为了显示项目类别,我使用了 ui:repeat 和支持的 bean calss 下面是我的 xhtml 代码
<ui:repeat id="repeat" value="#{getData.images}" var="img" varStatus="loop">
<h:panelGroup>
<p:graphicImage id="img1" value="#{img}" alt="image not available" >
</p:graphicImage>
</h:panelGroup>
</ui:repeat>
和托管 Bean 代码部分
private ByteArrayOutputStream baos = new ByteArrayOutputStream();
private List<StreamedContent> imageList = new ArrayList<StreamedContent>();
public List<StreamedContent> getImages(){
for (int i = 0; i < sdh.getNumOfImages(); i++) {
imageID = imageIDArray.get(i);
ImageService imgSer = new ImageService();
imgList.add(imageID);
imgSer.setData(imageID);
baos = imgSer.getImage();
try {
imageList.add(new DefaultStreamedContent(new
ByteArrayInputStream(baos.toByteArray())));
} catch (Exception ex) {
ex.printStackTrace();
}
}
imageNum = 0;
return imageList;
}
public StreamedContent getData() {
baos = imageList.get(imageNum);
//imageList.add(baos);
imageNum++;
return new DefaultStreamedContent(new ByteArrayInputStream(baos.toByteArray()));
}
现在我的问题是,如果我不取消注释“getData”中的“imageList.add(baos)”,则不会显示图像。现在我真的很想知道“ui:repeat”是如何工作的,因为“imageList”包含图像,如果需要,我可以在任何一种方法中保存相同的图像。如果我在 'getData' 方法中指定一个固定数字(例如:'imageList.get(0)'),那么同一个图像会显示多次。好像我在没有“imageList.add(baos)”的情况下放置了“imageNum”,它会抛出错误“流动态资源中的错误”
我厌倦了 Bjorn Pollex 的建议并进行了必要的更改,但现在没有出现图像