Очень простой образец Spring MVC с тимелией не работает - PullRequest
0 голосов
/ 30 августа 2018

Я очень разочарован, я следовал учебному пособию о том, как добавить Thymeleaf в проект Spring MVC, но он даже не работает с примером проекта из 3 классов. Thymeleaf не может найти мои взгляды, и я не знаю, что мне не хватает.

Stacktrace:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "ServletContext resource [/WEB-INF/views/test.html]")
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

SpringMVCConfiguration.class

@Configuration
@ComponentScan({ "main.java" })
@EnableWebMvc
public class SpringMVCConfiguration implements WebMvcConfigurer {
   @Autowired
   private ApplicationContext applicationContext;
   @Bean
   public SpringResourceTemplateResolver templateResolver() {
      SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
      templateResolver.setApplicationContext(applicationContext);
      templateResolver.setPrefix("/WEB-INF/views/");
      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);
   }
}

DispatcherServletConfiguration.class

public class DispatcherServletConfiguration extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { SpringMVCConfiguration.class };
    }
    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}

TestController.class

@Controller
public class TestController {
    @GetMapping("/test")
    public String test(Model model) {
        System.out.println("controller test");
        return "test";
    }
}

В Eclipse файл HTML находится здесь:

-- Project
    -- WebContent
        -- WEB-INF
            -- views
                - test.html

test.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
</head>
<body>
   <h1>TEST</h1>
</body>
</html>

1 Ответ

0 голосов
/ 30 августа 2018

Чтобы быстрее начать движение, я бы предложил использовать пружинный башмак с его стартером из листьев тимьяна. Он обрабатывает большую часть разочаровывающего кода проводки, чтобы избежать этих проблем.

https://www.mkyong.com/spring-boot/spring-boot-hello-world-example-thymeleaf/

В соответствии с вашим кодом, я предполагаю, что сканирование вашего компонента неверно. Можете ли вы переключить его из main.java в корень вашей иерархии пакетов ... что бы это ни было? Вероятно, это имя пакета, в котором находится файл main.java.

Также, возможно, попробуйте переместить ваш WEB-INF на src/main/web-app/WEB-INF?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...