ОБНОВЛЕНИЕ: переключил аннотацию с @RestController на @Controller, и теперь я просто получаю 404 при попытке нажать http://localhost: 8080 / api / v1 / create_short_url . Я добавил System.out.println в контроллер и вижу, как он распечатывается, поэтому я знаю, что он попадает в контроллер. Думаю, он просто не может найти шаблон.
@Controller
@RequestMapping("/api/v1")
public class UrlShorteningController {
@GetMapping("/create_short_url")
public String newShortUrl(Model model) {
System.out.println("^^^^^^^");
model.addAttribute("longUrl",
new String());
return "new-short-url-form";
}
Запрос
У меня есть контроллер, который, как я ожидаю, отобразит шаблон HTML. Вместо этого он просто возвращает имя контроллера. Что я здесь делаю не так?
Фактическое :
Ожидаемое : Отображение страницы html
Код
Контроллер в src / main / java / com / example / urlshortener / api / UrlShorteningController. java:
@RestController
....
@GetMapping("/create_short_url")
public String newShortUrl(Model model) {
model.addAttribute("longUrl",
new String());
return "new-short-url-form";
}
build.gradle:
...
dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
...
}
Шаблон Thymeleaf в src / main / resources / templates / new-short-url-form. html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>New Short Url</title>
</head>
<body>
<form method="POST" th:action="@{/create_short_url_thymeleaf}" th:object="${String}">
<h1>Enter a url to shorten</h1>
<input type="text" id="longUrl" th:field="*{String}"/>
</form>
</body>
</html>