Próbowałem wyświetlić panel, w którym użytkownik może zobaczyć listę kategorii przedmiotów (wyświetlanych jako obrazy), a po kliknięciu mogą wyświetlać produkty w tej kategorii (będą wyświetlane obrazy)Jak korzystać z <p: graphicImage> z DefaultStreamedContent w interfejsie użytkownika: repeat?
Do wyświetlania kategorii przedmiotów, użył ui: repeat nad podtrzymujące fasola calss Poniżej jest mój kodu 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>
I zarządzanej części Code 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()));
}
teraz mój problem, jeśli nie mam znak komentarza th e 'imageList.add (baos)' w 'getData', obrazy nie są wyświetlane. Teraz naprawdę chcę wiedzieć, jak działa "ui: repeat", ponieważ "imageList" zawiera obrazy i mogę je zapisać, jeśli jest to wymagane w jednej z metod. Jeśli określę stałą liczbę (np. "ImageList.get (0)") w metodzie "getData", to ten sam obraz jest wyświetlany wiele razy. Gdzie tak, jakbym wstawił "imageNum" bez "imageList.add (baos)" to spowodował błąd "Błąd w strumieniowym zasobie dynamicznym"
Zmęczony sugestią Bjorn Pollex i wprowadziłem niezbędne zmiany, ale teraz obrazy nie pojawiają się
Nie jesteś odwołanie do zmienna pętli ('img' w twoim przypadku) wewnątrz twojego' '. Twój 'getImages' powinien zwrócić' List ', a twoje' 'powinno mieć' value = "# {img}" '. –