Я был попытка отобразить панель, на которой пользователь может увидеть список категорий элементов (отображаемых в виде изображений), и при нажатии они могут просматривать продукты в категории (изображения будут отображаться)
Для отображения категории элементов я использовал ui:repeat над поддерживающей фасолью Ниже приведен мой код 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>
и части кода управляемого компонента
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()));
}
Теперь моя проблема, если я не раскомментирую файл 'imageList.add(baos)» в «getData», изображения не отображаются. Теперь я действительно хочу знать, как работает 'ui:repeat', поскольку 'imageList' содержит изображения, и я могу сохранить их, если потребуется, любым из методов. Если я укажу фиксированное число (например: 'imageList.get(0)') в методе 'getData', то одно и то же изображение будет отображаться несколько раз. Где, как если бы я поместил «imageNum» без «imageList.add (baos)», он выдает ошибку «Ошибка при потоковой передаче динамического ресурса»
. Я устал от предложения Бьорна Поллекса и внес необходимые изменения, но теперь изображения не появляются