Проблема с PostMapping - метод GetMapping - цикл в ссылке. SpringBoot

У меня проблемы с отправкой данных в одну из моих таблиц. Ниже вы можете увидеть мои методы: один показывает шаблон с формой, а второй добавляет это действие.

@GetMapping("/addaction/{id}")
    public String addAction(Model model, @PathVariable("id") int id ) {

        Optional<PlantEntity> plantEntity = plantService.getPlantById(id);
        if (plantEntity.isPresent()) {
            model.addAttribute("plant", plantEntity.get());
        }



        return "addaction";
    }

    @PostMapping("/addaction/{id}")
    public String addAction(@ModelAttribute ActionForm actionForm,
                           @PathVariable("id") int plantId) {

        if (!userService.isLogin()) {
            return "redirect:/";
        }
        actionService.addAction(actionForm, plantId);
        return "redirect:/plant/"+plantId;
    }

Вот мой метод в Сервисе:

public void addAction (ActionForm actionForm, int plantId) {

        PlantEntity plantEntity = new PlantEntity();
        plantEntity.setId(plantId);

        ActionEntity act = new ActionEntity();

        act.setName(actionForm.getName());
        act.setDescription(actionForm.getDescription());
        act.setPlant(plantEntity);
        act.setUser(userService.getUserData());
        act.setMonth(actionForm.getMonth());

        actionRepository.save(act);

    }

и мой шаблон: addaction.html

<form method = "post" action = "'/addaction/'+${plant.getId()}"
                    th:object = "${actionForm}">

                    <div class = "form-group">
                        <label for = "exampleInputEmail1">Name of activity</label> <input
                            type = "text" th:field = "*{name}" class = "form-control"
                            id = "exampleFormControlInput1" aria-describedby = "emailHelp"
                            placeholder = "Name your work">
                    </div>

                    <div class = "form-group">
                        <label for = "exampleFormControlTextarea1">What you gonna
                            do?</label>
                        <textarea class = "form-control" th:field = "*{description}"
                            id = "exampleFormControlTextarea1" rows = "4"></textarea>
                    </div>


                    <div class = "input-group mb-3">
                        <div class = "input-group-prepend">
                            <label class = "input-group-text" for = "inputGroupSelect01">Month of activity</label>
                        </div>
                        <select class = "custom-select" th:field = "*{month}"
                            id = "inputGroupSelect01">
                            <option value = "1">January</option>
                            <option value = "2">February</option>
                            <option value = "3">March</option>
                            <option value = "4">April</option>
                            <option value = "5">May</option>
                            <option value = "6">June</option>
                            <option value = "7">July</option>
                            <option value = "8">August</option>
                            <option value = "9">September</option>
                            <option value = "10">October</option>
                            <option value = "11">November</option>
                            <option value = "12">December</option>
                        </select>
                    </div>

                    <button type = "submit" class = "btn btn-dark">Action!</button>

                </form>

Основная проблема: когда я пытаюсь добавить действие, результат:

http://localhost:8080/addaction/'/addaction/'+$%7Bplant.getId()%7D

Есть какая-то петля. Что я делаю неправильно? Спасибо за уделенное время!

Попробуйте "/addaction/${plant.getId()}"

user7294900 05.11.2018 18:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
226
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужно проходить '. Spring язык выражений также без '.

Попробуйте удалить, как показано ниже.

action = "/addaction/${plant.getId()}"

Обратитесь к тимелеаф-конструкция-URL-адрес с переменной

Спасибо! Этот случай был немного сложнее, но ваша ссылка оказалась очень полезной :) Она работает с: th: action = "@ {/ addaction / {id} (id = $ {plant.getId ()})}"

danny 06.11.2018 12:05

Другие вопросы по теме