Нет трассировки стека 404, как правило, указывает на отсутствие сопоставления.Поскольку вы, возможно, предоставили только часть вашего Controller
, я предполагаю, что причиной этого является код, который вы видите здесь:
<form th:object="${malt}" th:action="@{/malt/}" method="post">
Однако действие принимает значение ("/malt/")
,ваш контроллер не получил отображение для этого ?!Я ожидаю, что это должно это исправить:
<form th:object="${malt}" th:action="@{${'/' + malt.id + '/edit'}}" method="post">
Обновление
Посмотрел ваш контроллер, и у вас есть следующие аннотации для вашего класса
@Controller
@RequestMapping("/malt")
public class MaltController{..
@RequestMapping("/malt")
теперь проложит ваш путь для сохранения ../malt/{id}/edit'
.Код ниже теперь должен работать:
<form th:object="${malt}" th:action="@{${'/malt/' + malt.id + '/edit'}}" method="post">
При использовании " @ {$ {...}} "
@ {} - это переменная ссылки, содержимое этого тега будет добавлено к корневому контексту приложения, например, при переполнении стека @{'/posts'}
приведет к https://stackoverflow.com/posts
$ {} - это выражение переменной, котороевернет String
или значение .toString()
объекта.
Если мы хотим передать переменную в переменную связи @{}
, мы должны включить в нее переменную ${}
, что приведет к:
@{${'/hope/this/helps' + yourVariable}}