Wie zu verwenden <p:graphicImage> mit DefaultStreamedContent in einem ui:repeat?

Ich versuchte display ein panel, wo der Benutzer sehen kann, eine Liste der Elemente, die der Kategorie(als Bild dargestellt) und klicken Sie anzeigen können Produkte innerhalb der Kategorie(Bilder werden angezeigt)

Zur Anzeige der item-Kategorie, habe ich das ui:repeat nad die Unterstützung bean-calss
Unten ist mein xhtml code

<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>

Die Managed-Bean-Code-Teile

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()));
}

Nun mein problem, wenn ich die nicht kommentieren Sie die 'imageList.add(baos)' in 'getData', die Bilder werden nicht angezeigt.
Jetzt habe ich wirklich wissen will, wie die 'ui:repeat" funktioniert, da die 'imageList' mit den Bildern und ich kann speichern, wenn erforderlich, entweder in der Methode. Wenn ich eine Feste Anzahl angegeben (ex:'imageList.get(0)') in der "getData" - Methode dann das gleiche Bild zeigen, mehrere Male. Wo, wie, wenn ich die 'imageNum' ohne 'imageList.add(baos)' werfen Fehler 'Fehler beim streaming von dynamischen Ressource'

Ich müde Björn Pollex Vorschlag und die notwendigen änderungen vorgenommen, aber jetzt die Bilder nicht angezeigt

  • Sie verweisen nicht die loop-variable (img in deinem Fall) in Ihren <ui:repeat>. Ihre getImages zurückgeben sollte eine List<StreamedContent>, und Ihre <p:graphicImage> sollte value="#{img}".
InformationsquelleAutor user1433804 | 2012-06-08
Schreibe einen Kommentar