Передать параметр в контроллер из формы

У меня есть форма, в которую выводятся данные, и мне нужно по нажатию например на ссылку, чтобы сработал метод в контроллере, и туда передался в качестве параметра name конкретного выводимого объекта. Но при нажатии на ссылку Edit,я получаю

Could not parse as expression: "/request/${request.getName()}" 
<div class="row mb-2" >
    <th:div class="col-md-6" th:each="request : ${list}">
        <div class="col p-4 d-flex flex-column position-static">
            <h3 class="mb-0" th:text="${request.name}"></h3>
            <a class="stretched-link" th:href="/request/${request.getName()}">Edit</a>
        </div>    
        </div>
    </th:div>

@GetMapping("/request/{name}")
public RequestEntity editRequest(@PathVariable String name) throws RequestException {
    RequestEntity requestEntity = new RequestEntity();
}

Ответы (1 шт):

Автор решения: Михаил Ребров

Thymeleaf ожидает от вас одно из стандартных выражений
(желательно выражение для формирования URL)

Вы же передаёте ему строку, которую он не может понять, работающую по непонятным для него правилам.

Из вышеприведенных ссылок в документации можно понять, что:

  • для формирования URL используются выражения @{ ... }
  • для работы с переменными используются выражения ${ ... }
  • для работы с параметризованными запросами в URL используются выражения вида:
    @{/order/{id}/details(id=3,action='show_all')}

В итоге мы можем использовать выражение для формирования URL, использовать плейсхолдер для передачи параметра и в качестве параметра указать выражение переменной.

В итоге получится:

 th:href="@{/request/{name}(name=${request.getName()})}"

Ссылки:

→ Ссылка