После использования метода post информация не появляется на другой странице
Я пытаюсь глубже изучить thymeleaf и сталкиваюсь с проблемой, что после метода post ничего не появляется на моей другой странице. Я смотрел учебники и документы, но, похоже, что-то упустил.
Итак прежде всего у меня есть главная страница с MainController:
package com.gallery.galleryproject.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class MainController { @RequestMapping(value = "", method = RequestMethod.GET) public String loadMainPage() { return "main.html"; } }
<!doctype html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Welcome</title> </head> <body style="background-color: #D3D3D3"> <nav> <div> <h2 style="text-align: center">Welcome to gallery</h2> </div> </nav> <section style="padding-top: 20px"> <div style="text-align: center;"> <p>View gallery: <a href="/gallery" style="text-decoration: none">Visit</a></p> <p>Add new photo to gallery: <a href="/photo" style="text-decoration: none">Visit</a></p> </div> </section> </body> </html>
Затем у меня есть контроллер галереи и страница галереи(на этой странице Я хочу отобразить информацию, которая была отправлена со страницы фотографии). GalleryController + страница:
package com.gallery.galleryproject.controller; import com.gallery.galleryproject.model.Photo; import com.gallery.galleryproject.service.GalleryService; import com.gallery.galleryproject.service.PhotoService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class GalleryController { private GalleryService galleryService; public GalleryController(GalleryService galleryService) { this.galleryService = galleryService; } @RequestMapping(value = "/gallery", method = RequestMethod.GET) public String listOfObjects(Model model) { Photo photo = galleryService.getAllPhotos(); model.addAttribute("photo", photo); return "gallery.html"; } }
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Gallery</title> </head> <body> <nav> <div> <h2 style="text-align: center">Take a look..</h2> </div> </nav> <section> <div class="container"> <div class="display-galery" style="padding-left: 30px"> <p>Id of the photo: </p> <p>Name of the photo: </p> <p>Tag of the photo: </p> <p>Quality of the photo: </p></div> </div> </section> </body> </html>
Вот мой фотоконтроллер + html-страница, где я заполняю форму.
package com.gallery.galleryproject.controller; import com.gallery.galleryproject.model.Photo; import com.gallery.galleryproject.service.PhotoService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class PhotoController { private PhotoService photoService; public PhotoController(PhotoService photoService){ this.photoService = photoService; } @RequestMapping(value = "/photo", method = RequestMethod.GET) public String displayPhoto(Model model) { Photo photo = new PhotoService().displayPhotos(); model.addAttribute("photoC", photo); return "photo"; } }
<!doctype html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Welcome</title> </head> <body > <nav> <div> <h2 style="text-align: center">Fill all the fields</h2> </div> </nav> <section> <form action="#" th:action="@{/gallery}" th:object="${photoC}" method="POST"> <p>Enter ID: </p> <input type="number" th:field="*{id}"><br> <p>Enter photo name: </p> <input type="text" th:field="*{name}"><br> <p>Enter photo tag: </p> <input type="text" th:field="*{tag}"><br> <p>Enter photo quallity:</p> <input type="number" th:field="*{quality}"><br> <input type="file"> <input type="submit" value="Submit"> <input type="reset" value="Cancel"> </form> </section> </body> </html>
Кроме того, у меня есть услуги: GalleryService, который сейчас пуст(теперь я немного потерялся, так что это причина, почему он пуст) и PhotoService, где я использую геттеры для получения информации
package com.gallery.galleryproject.service; import com.gallery.galleryproject.controller.GalleryController; import com.gallery.galleryproject.model.Photo; import org.springframework.stereotype.Service; @Service public class GalleryService { public Photo getAllPhotos() { Photo photo = new Photo(); return photo; } } package com.gallery.galleryproject.service; import com.gallery.galleryproject.model.Photo; import org.springframework.stereotype.Service; @Service public class PhotoService { public Photo displayPhotos() { Photo photos = new Photo(); photos.getId(); photos.getName(); photos.getTag(); photos.getQuality(); return photos; } }
Что я уже пробовал:
Стек, видео, весенние уроки, но, вероятно, я что-то упускаю.
Member 14160044
Можете ли вы вставить свою фотомодель. Вы создаете экземпляр фотомодели в GalleryService, но я не думаю, что фотомодель возвращает все фотографии. Кроме того, я хотел бы видеть сеттеры в фотомодели, потому что вы использовали их в фотосервисе без какого-либо смысла, если они просто возвращают элементы.