Thymeleaf генерирует URL без параметров запроса, но '?' появляется

Я работаю над простым Spring Boot MVC application использованием Thymeleaf.

Часть кода листа тимьяна:

         <tr th:each="dept: ${departments}">

        <td th:text="${dept.getId()}"></td>
        <td th:text="${dept.getName()}"></td>
        <td>
            <form th:object="${dept}" th:action="@{'/departments/' + ${dept.getId()}}">
                <button class="btn btn-secondary">Details</button>
            </form>
        </td>

        <td>
            <form th:object="${dept}" th:action="@{/departments/{id}/edit(id=${dept.getId()})}">
                <button class="btn btn-secondary">Edit</button>
            </form>
        </td>
        <td>
            <form th:object="${dept}" th:action="@{/departments/{id}(id=${dept.getId()})}" th:method="delete">
                <button class="btn btn-secondary">Delete</button>
            </form>
        </td>
    </tr>

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

enter image description here

При нажатии на кнопку Edit (то же самое и с Details) загружается корректно, но URL генерирует символ ? для других параметров запроса, а их на самом деле нет (например http://localhost:8089/departments/3/edit?).

enter image description here

Код контроллера:

@GetMapping("/{id}/edit")
public String editDepartment(@PathVariable("id") String departmentId, Model model) {
    var department = departmentService.getDepartmentById(Long.valueOf(departmentId));
    model.addAttribute("department", department);
    return "edit-department"; // returns view
}

Моя проблема связана с отображаемым символом ?. Я не хочу, чтобы он отображался, так как нет параметров запроса. Любая помощь?

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
13
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Пытаться

<form th:object="${dept}" th:action="@{/departments/edit/{id}(id=${dept.getId()})}">

Нет, такое же поведение

Andrei Manolache 10.04.2022 17:56
Ответ принят как подходящий

Это добавление вопроса ?, потому что вы отправляете пустую форму. Почему бы просто не использовать ссылку в виде кнопки?

<a class="btn btn-secondary" th:href="@{/departments/{id}/edit(id=${dept.id})}" role="button">Edit</a>

Да, похоже, это обходной путь

Andrei Manolache 10.04.2022 18:25

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