Tomcat thymeleaf 404 статус код
Tomcat всё время выкидывает 404 статус код (не для index.jsp файла, с ним всё окей). Есть какие-то варианты, как можно его сконфигурировать?
First.java
package com.rst.springlearn.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class First {
@GetMapping("/qqq")
public String testOne() {
return "asd";
}
}
DispatcherConfig.java
package com.rst.springlearn.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class DispatcherConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {SpringConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
SpringConfig.java
@Configuration
@ComponentScan("com.rst.springlearn")
@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(this.applicationContext);
templateResolver.setPrefix("/WEB-INF/views/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.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());
resolver.setOrder(1);
resolver.setViewNames(new String[] {".html", ".xhtml"});
registry.viewResolver(resolver);
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){
configurer.enable();
}
}
Если добавить System.out.println("123"); в First.java (перед return), то он никогда не выведется. То есть проблема в tomcat получается (и кривых руках офк)
Ответы (1 шт):
Автор решения: Resistance杀杀杀
→ Ссылка
Tomcat версии 9.0.хх надо брать. 10 для EE, из-за этого не работало. Также в configureViewResolvers надо убрать строку с setViewNames
