1

I've tried to configure controllers for thymeleaf views resolver, but it doesn't work. I made controller test and they passed so i think it is servlets configuration problem.

My WebConfig looks like this:

@Configuration
@EnableWebMvc
@ComponentScan("springmvccommerce.web")
public class WebConfig implements WebMvcConfigurer{



    @Bean
    ViewResolver viewResolver() {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine());
        return viewResolver;
    }
    
    @Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCacheable(true);
        return templateResolver;
    }
        
    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());
        templateEngine.setEnableSpringELCompiler(true);
        return templateEngine;
    }
    
    
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
     
}


Edit:

HomeController:

@Controller
public class HomeController {

    @GetMapping("/")
    public String home() {
        return "home";
    }

}

And productController:

@Controller
public class ProductController {

    @Autowired
    private ProductRepository productRepository;

    @GetMapping("/products")
    public String products(Model model) {
        model.addAttribute("productList", productRepository.findProduct(Long.MAX_VALUE, 20));
        return "products";
    }
}

If it is not enough, I've added link to repo in comment.

KK 13
  • 53
  • 5
  • paste your `controller` code files and also the application config xml file.A much easier way would be to use Spring Boot which will make it lot easier to configure any dependency. – wolf Mar 06 '21 at 12:12
  • @wolf Thank you for your answer and I am sorry for answering you so late. I know Spring Boot is easier way, but I want to understand how it works, so I decided to build a project without Spring Boot. I am pasting link to my github repository in which you can see all files. [repo](https://github.com/KacperKromka/Spring-MVC-example-project) – KK 13 Mar 11 '21 at 12:36
  • But now it is rebuilded in IntelliJ, because I know this IDE better, and I use maven to build .war file and I deploy it on tomcat 10. – KK 13 Mar 11 '21 at 12:42

1 Answers1

0

It seems spring boot haven't support for tomcat 10 due to the jakarta namespace, switch to tomcat 9 and retry.

Here are some links related:

  1. https://github.com/spring-projects/spring-framework/issues/25354
  2. Deploying Spring 5.x on Tomcat 10.x with jakarta.* package