Как исправить отображение одного и того же изображения для каждого элемента - PullRequest
1 голос

Вопрос: Как исправить отображение одного и того же изображения для каждого элемента?

thymleaf.html

<div th:each="goals : ${goals}">
<div th:text="${goals.getId()}"></div>
<img th:src="@{'image/'+ ${goals.getId()}}" width="100px;"   
height="100px;"/>
<div th:text="${goals.title}"></div>

контроллер изображения

@GetMapping(value = "/image/{id}")
public void showProductImage(@PathVariable String id,
HttpServletResponse response) throws IOException{

Goals goals = goalsRepository.findById(UUID.fromString(id));
logger.info("I got id--"+id);
response.setContentType("image/jpeg, image/jpg, image/png, 
image/gif");
response.getOutputStream().write(goals.getImage());
response.getOutputStream().close();

контроллер страницы просмотра

@GetMapping(value = "/goals")
public String read(Model model) {

model.addAttribute("login", new LogIn()); //it for bottom menu
model.addAttribute("currentlyPage","goals"); // it for top menu
model.addAttribute("addNewGoal", new addNewGoal()); //another page

//get all goals
List<Goals> goals = new ArrayList<>();
goalsRepository.findAll().forEach(goals::add);
model.addAttribute("goals",goals);
return "goals";

log4j

I got id--bc8c9820-9500-    
I got id--5ba1d0d0-9504-    
I got id--bff1d8a0-94ff- 
I got id--1f0da4f0-94ff-11e9-970f-0bfed788288d
I got id--d76dd9b0-9500-11e9-81ae-c9c1d3b67a0f
I got id--4aaaac80-9512-11e9-b98b-7deb4e16d250
I got id--608dae20-94ff-11e9-89b4-83a8b92aa5c9

Я ожидаю разных изображений, но везде одинаковые изображения. введите описание изображения здесь

1 Ответ

0 голосов

Я нашел решение.

  1. Я изменил тип изображения объекта на ByteBuffer

  2. Я сменил контроллер на следующий код:

    @GetMapping(value = "/image/{id:.+}")
    
    public @ResponseBody ResponseEntity<byte[]> showProductImage(@PathVariable String id, HttpServletResponse response) throws IOException {
    
         Goals goals = goalsRepository.findById(UUID.fromString(id));
    
         ByteBuffer buffer =goals.getImage();
         byte[] bytes = buffer.array();
    
         return ResponseEntity.ok().contentType(MediaType.IMAGE_JPEG).body(bytes);
    }
    
  3. Я изменил некоторое значение типа для конвертации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...