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

→ Ссылка