LINUX.ORG.RU

Отображение List-a изображений на странице.

 , ,


0

1

Изображения находятся в блобах. Как отобразить несколько изображений одновременно(предварительно преобразовав их из байтов) на странице?

Бины Car и Image

public class Car {
    
    private long id;
    private String autoMark;
    public Car() {
    }
    //getters setters
public class Image {
    int id;
    int lot_id;
    byte[] image;

    public Image() {
    }
    //getters setters

Контроллер ImageController

package controller;

import bean.Image;
import database.Database;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.bean.ManagedBean;

@ManagedBean(eager = true)
@ApplicationScoped
public class ImageController implements Serializable {

    ArrayList<Image> images;

    public ImageController() {
    }

    public ArrayList<Image> getImages() {

        images = new ArrayList<>();

        try (Connection conn = Database.getConnection();
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select * from image where lot_id=1")) { 
            while (rs.next()) {
                Image image = new Image();
                image.setId(rs.getInt("id"));
                image.setUser_id(rs.getInt("user_id"));
                image.setLot_id(rs.getInt("lot_id"));
                image.setImage(rs.getBytes("image"));
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        }
        return images;
    }
}

Сервлет ShowImage для преобразования байт в изображение. Сейчас работает если передавать 1 изображение в виде байтов.

package servlet;

import bean.Image;
import controller.ImageController;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ShowImage extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("image/jpeg");  
        OutputStream out = response.getOutputStream();  
        try {
            int id = Integer.valueOf(request.getParameter("id"));
            
            ImageController imageController = new ImageController();
//            ArrayList<Image> images = imageController.getImages();  // как обработать эту коллекцию? Нужно вытянуть из нее ид изображения.
            
            byte[] image = imageController.getImage(id);         
            response.setContentLength(image.length);
            out.write(image);
        }catch (Exception ex){
            ex.printStackTrace();
        } finally {            
            out.close();
        }
    }

  }

Код страницы компонент PrimeFaces

<p:galleria value="#{imageController.getImages()}" var="image" panelWidth="152" panelHeight="102" showCaption="false">
     <p:graphicImage name="/ShowImage?id=#{image.id}" alt="Image Description for #{image}" title="#{image}"/>  
</p:galleria>

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