Wyświetlanie zdjęć po odświeżeniu strony

0

Cześć,
męczę się z pewną rzeczą od wczoraj i nie mam pomysłu jak zrobić krok do przodu. Chciałbym wyświetlić zdjęcia zapisane w bd przy użyciu <p:gallery> i <p:graphicimage> z biblioteki PrimeFaces. Wszystko działa fajnie przy pierwszym wyświetleniu strony, ale po odświeżeniu strony w przeglądarce zdjęcia nie wyświetlają się:
o.jpg

Debugowałem wielokrotnie aplikację i po odświeżeniu nie są zwracane nulle. Lista "images" też nie jest nullem, wszystko wygląda ok. Nie do końca rozumiem jak działa wywoływanie metod przez EL. Przy pierwszym odpaleniu strony, gdy zdjęcia są wyświetlone, metoda getPhoto() jest wywoływana 24 razy (a mamy 8 zdjęć). Po odświeżeniu jest ona wywoływana 32 razy (o 8 więcej). Czemu?

gallery.xhtml:

            <p:galleria value="#{showPhoto.images}" var="img">
               <p:graphicImage value="#{showPhoto.photo}" >
                  <f:param name="imgId" value="#{img.id}" />
               </p:graphicImage>
            </p:galleria>

Bean:

@ManagedBean
@SessionScoped
public class ShowPhoto {

    @Inject private PhotosDao photosDao;

    @Inject private ContentConverter converter;

    private List<Image> images;

    private long count;

    @PostConstruct
    public void initialize() {
        images = new ArrayList<>();
        count = photosDao.count();
        retrievePhotos();
    }

    public StreamedContent getPhoto() {

        String imageId = FacesContext.getCurrentInstance()
                                     .getExternalContext()
                                     .getRequestParameterMap()
                                     .get("imgId");

        if(imageId != null) {
            int imgId = Integer.parseInt(imageId) - 1;
            return images.get(imgId).getContent();
        }

        return images.get(1).getContent(); // śmieć
    }

    public void retrievePhotos() {
        ... // pobieranie danych z bd i zapisywanie ich na listę
    }

    public void setImages(List<Image> images) {
        this.images = images;
    }

    public List<Image> getImages() {
        return images;
    }

    public long getCount() {
        return this.count;
    }

}

Prosiłbym o jakieś porady, bo przejrzałem internet i nie widziałem żeby ktoś miał podobny problem.

0

zmieniłem adnotację nad beanem na "@Named" i "@[email protected] i śmiga.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0