Spring не может найти шаблоны html по заданному пути
Всем доброго времени суток, не так давно изучаю spring, и частенько сталкивался с проблемами, которые удавалось найти и исправить, но в этот раз я нашёл только похожие вопросы, которые всё же не смогли мне помочь исправить эту проблему, поэтому пишу этот вопрос и буду максимально благодарен любой помощи!)
Суть приложения состоит в записи/удалении/изменении и выводе строк из БД.
У меня есть 4 контроллера, репозиторий и 4 шаблонных html-страницы. После запуска приложения выдается вот такая ошибка:
An error happened during template parsing (template: "ServletContext resource [/src/main/resources/templatesindex.html]")
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "ServletContext resource [/src/main/resources/templates/index.html]")
Контроллер для главной страницы:
import com.example.web.Entitys.Employees;
import com.example.web.repos.EmployeeRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
public class MOdul {
@Autowired
EmployeeRepo nameRepo;
public MOdul(EmployeeRepo nameRepo) {
this.nameRepo = nameRepo;
}
@RequestMapping("/index")
public String saveEmployee(Model model) {
return "index";
}
@PostMapping("/index")
public String formPost(@RequestParam String name,
@RequestParam String lastname,
@RequestParam String secondname,
@RequestParam String sex,
@RequestParam String dateofbirth,
@RequestParam String Work,
@RequestParam String number, Model model) {
Employees employees = new Employees(name, lastname, secondname,sex, dateofbirth, Work, number);
nameRepo.save(employees);
return "index";
}
}
Шаблон главной страницы:
<!DOCTYPE html>
<html lang="en">
<link rel="stylesheet" href="startbootstrap-modern-business-1.0.5/css/bootstrap.css">
<script src="startbootstrap-modern-business-1.0.5/js/bootstrap.js"></script>
<head>
<meta charset="UTF-8">
<title>Main page</title>
</head>
<body>
<div class = "main">
<form action="/index" method="post">
<label>
Имя
<input type="text" name="name">
</label><br>
<label>
Фамилия
<input type="text" name="secondname">
</label><br>
<label>
Отчество
<input type="text" name="lastname">
</label><br>
<label>
Пол
<input type="text" name="sex">
</label><br>
<label>
Дата рождения
<input type="text" name="dateofbirth">
</label><br>
<label>
Должность
<input type="text" name="Work">
</label><br>
<label>
Номер телефона
<input type="text" name="number">
</label><br>
<button type="submit" >Отправить</button>
</form>
</div>
<a href="/delete"> Delete User </a><br>
<a href="/change"> Change User </a><br>
<a href="/Employee"> Список работников</a>
</body>
</html>
SpringConfig
:
@Configuration
@ComponentScan("com.example.web")
@EnableWebMvc
public class SpringConfig implements WebMvcConfigurer {
private final ApplicationContext applicationContext;
@Autowired
public SpringConfig(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("src/main/resources/templates/");
templateResolver.setSuffix(".html");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
registry.viewResolver(resolver);
}
}
Структура проекта:
P.S. полная ошибка:
There was an unexpected error (type=Internal Server Error, status=500).
An error happened during template parsing (template: "ServletContext resource [/src/main/resources/templates/index.html]")
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "ServletContext resource [/src/main/resources/templates/index.html]")
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:235)
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100)
at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:649)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077)
at org.thymeleaf.spring6.view.ThymeleafView.renderFragment(ThymeleafView.java:372)
at org.thymeleaf.spring6.view.ThymeleafView.render(ThymeleafView.java:192)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1415)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1159)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1098)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:537)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:631)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/src/main/resources/templates/index.html]
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:164)
at org.thymeleaf.spring6.templateresource.SpringResourceTemplateResource.reader(SpringResourceTemplateResource.java:103)
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:223)
... 40 more