Изображения ошибочно повторяются в p: galeria - PullRequest
0 голосов
/ 10 апреля 2019

У меня проблемы с использованием галереи простых изображений.
Иногда диафильм отображается несколько раз, иногда нет.

Galleria printscreen

Изображения получены динамически классом сервлетов.
Я уже отладил код, и список изображений правильный, без повторения пунктов.

Как я могу предотвратить повторение изображений?

galleria.xhtml

<p:galleria id="myGalleria" 
        value="#{myBean.imageList}"
        var="item" 
        effect="fade" 
        autoPlay="false" 
        panelWidth="540"        
        showCaption="true" 
        widgetVar="myGalleria">     

    <p:graphicImage width="520" 
                    id="img"
                    title="#{item.description}"
                    value="/imageServlet/show?id=#{item.id}" 
                    cache="false" />
</p:galleria>

ImageServlet

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String id = request.getParameter("id"); 

    if(StringUtils.isNotBlank(id)) {

        try {

            byte[] dados = myService.getImageData(id);
            if(dados != null) {

                String fileName = id.concat(EXTENSAO_ARQUIVO);

                response.setHeader("Content-Type", getServletContext().getMimeType(fileName));
                response.setHeader("Content-Length", String.valueOf(dados.length));
                response.setHeader("Content-Disposition", "inline; filename=\"" + fileName + "\"");

                // configuracoes de cache
                response.setHeader("Cache-control", "no-cache, no-store");
                response.setHeader("Pragma", "no-cache");
                response.setHeader("Expires", "-1");

                InputStream in = new ByteArrayInputStream(dados);
                OutputStream out = response.getOutputStream();

                IOUtils.copy(in, out);

                if(in != null) {
                    in.close();
                }
                if(out != null) {
                    out.close();
                }
            }           
        } catch (Exception e) {
            // TODO: log
            e.printStackTrace();
        }
    }
}

Класс MyImage

public class MyImage {
   private String id;
   private String description;
}

MyBean класс

public class MyBean {
   List<MyImage> imageList = myService.getImageList();
}

1 Ответ

1 голос
/ 29 апреля 2019

Это может быть дубликат Проблема пользовательского интерфейса Primefaces с Gallery Film strip , посмотрите мой обходной путь там:

<p:commandLink onclick="PF('popup').show();" update="galleria"/>
<p:dialog id="popup">
    <p:galleria id="galleria"/>
</p:dialog>
...