Я працюю з Spring MVC і намагаюся зрозуміти, як працює контролер / перегляд частини, але я отримую помилку 404 на "/" та будь-який інший маршрут, який я пробую. Я спробував додати @EnableWebMVC
до мого основного класу, але це дає мені 500 помилок Could not resolve view with name "index" in servlet with name "dispatcherServlet"
та виняток, перелічений нижче.
Мій контролер:
public class MyController {
@RequestMapping("/")
public String index(Model model) {
return "index";
}
}
У мене є обидва /src/main/resources/static/index.html
/.../resources/templates/index.html
, оскільки я все ще новачок у Весна / Чебрець, і я не впевнений, над чим слід працювати
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Could not resolve view with name "index" in servlet with name "dispatcherServlet"] with root cause
javax.servlet.ServletException: Could not resolve view with name "index" in servlet with name "dispatcherServlet"
Відповіді:
0 для відповіді № 1Вам не потрібно /src/main/resources/static/index.html
файл, тому що це буде лише статична сторінка для вашої програми.
Щоб мати динамічно генеровану сторінку в результаті виклику контролера, вам потрібен шаблон, в якому повинен знаходитися /src/main/resources/templates
.
Додатково потрібен механізм роздільної здатності переглядущоб Spring MVC працював належним чином, тому що Spring повинен бути в змозі з'ясувати, що робити, якщо ви повернете ім'я перегляду "index" у вашому методі контролера. Рамка повинна якось "знати", що це повинно викликати візуалізацію шаблону src/main/resources/templates/index.html
використовуючи відповідний механізм шаблону, наприклад Чебрець. Детальніше дивіться тут: https://docs.spring.io/spring/docs/5.0.4.RELEASE/spring-framework-reference/web.html#mvc-viewresolver
Оскільки ви хочете використовувати Thymeleaf, будь ласка, зверніться до цього підручника щодо інструкцій, як налаштувати його як двигун шаблону для Spring MVC: http://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html
Підказка: Якщо ви використовуєте Spring Boot, все це можна досягти за допомогою автоматичної конфігурації, якщо ви просто додасте ці дві залежності до своєї програми:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>