Member 14154379 Ответов: 0

После использования метода 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, но я не думаю, что фотомодель возвращает все фотографии. Кроме того, я хотел бы видеть сеттеры в фотомодели, потому что вы использовали их в фотосервисе без какого-либо смысла, если они просто возвращают элементы.

0 Ответов