LINUX.ORG.RU

Отображение изображения из BLOB графическим компонентом PrimeFaces.

 , ,


0

1

Нужно отобразить изображения находящиеся в BLOB-ах графическим компонентом PrimeFaces <p:galleria> Вот реализация на данный момент -

<p:dataGrid var="car" value="#{postController.cars}" columns="3" rows="12"   <!-- Получаем список cars  -->
                        paginator="true" rowsPerPageTemplate="9,12,15" 
                        currentPageReportTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} 
                        {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
                <p:column>
                    <p:panel header="#{car.autoMark}">
                        <h:panelGrid columns="1">
                            <h:outputText value="#{car.autoModel}" />
                            <p:galleria value="#{imageController.getImagesById(car.id)}" var="image" panelWidth="152" panelHeight="102" showCaption="false">   <!-- Получаем список изображений для конкретной car  -->
                                <p:graphicImage value="/TestImage?imageInBytes=#{image.imageInBytes}" alt="Image Description for #{image.id}" title="#{image.lot_id}" /> <!-- Преобразуем байты в изображения сервлетом  -->
                            </p:galleria>
                        </h:panelGrid>
                    </p:panel>
                </p:column>
</p:dataGrid>
Строка
<p:graphicImage value="/TestImage?imageInBytes=#{image.imageInBytes}" alt="Image Description for #{image.id}" title="#{image.lot_id}" />
в браузере
<img id="j_idt19:1:j_idt27" src="/PROJECT/TestImage?imageInBytes=[B@2f0aadeb&amp;pfdrid_c=true" alt="Image Description for 1" title="1">

Сейчас 2 проблемы:

1. Не отображаются изображения. Код сервлета - не знаю что тут не так.

        response.setContentType("image/jpeg");
        try (OutputStream out = response.getOutputStream();) {
            byte[] imageInBytes = request.getParameter("imageInBytes").getBytes();
            response.setContentLength(imageInBytes.length);
            out.write(imageInBytes);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

2. Компоненту <p:galleria> передается несколько объектов-изображений, но определяется только одно, при этом в следующем блоке dataGrid в котором свой компонент <p:galleria> со своими изображениями отображается второе изображение из первого компонента <p:galleria>, имхо не отрабатывает внутренний цикл, как исправить эту асинхронность?


Ответ на: комментарий от ii8_

я этих jsf как огня боюсь, вляпаешся так них, и потом поддерживай монстра

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.