Como usar <p: graphicImage> com DefaultStreamedContent em um ui: repeat?
Eu estava tentando exibir um painel onde o usuário pode ver uma lista de categoria de itens (exibida como imagens) e ao clicar eles podem ver produtos dentro da categoria (as imagens serão exibidas)
Para exibir a categoria do item, usei o comando ui: repeat nad the support bean Abaixo está meu código 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>
E as partes do código do bean gerenciado
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()));
}
Agora meu problema se eu não descomente o 'imageList.add (baos)' em 'getData', as imagens não são exibidas. Agora eu realmente quero saber como o 'ui: repeat' funciona, já que o 'imageList' contém as imagens e eu posso salvar o mesmo se necessário em qualquer um dos métodos. Se eu especificar um número fixo (ex: 'imageList.get (0)') no método 'getData', a mesma imagem será mostrada várias vezes. Onde como se eu colocar o 'imageNum' sem o 'imageList.add (baos)' ele lançar erro 'Erro no streaming de recursos dinâmicos'
Eu cansei da sugestão de Bjorn Pollex e fiz as mudanças necessárias, mas agora as imagens não aparecem