Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Отображение изображения из BLOB графическим компон


Автор: ivanmakedonski 26.6.2014, 13:53
Нужно отобразить изображения находящиеся в 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>, имхо не отрабатывает внутренний цикл, как исправить эту асинхронность?

Автор: ivanmakedonski 27.6.2014, 00:46
Решено.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)