0

我试了很多解决方案,但它不起作用。我正在使用Intellij 2016.1。 我无法强制应用程序解析模板。Thymeleaf org.thymeleaf.exceptions.TemplateInputException:解析模板时出错

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/login/login", template might not exist or might not be accessible by any of the configured Template Resolvers 

配置

@Configuration 
@ComponentScan(basePackages = "com.unibooker") 
@EnableWebMvc 
public class Config extends WebMvcConfigurerAdapter{ 

@Bean 
public TemplateResolver templateResolver() { 
    ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(); 
    templateResolver.setPrefix("classpath:/WEB-INF/templates/"); 
    templateResolver.setSuffix(".html"); 
    templateResolver.setTemplateMode("HTML5"); 

    return templateResolver; 
} 

@Bean(name = "templateEngine") 
public SpringTemplateEngine getTemplateEngine() 
{ 
    SpringTemplateEngine templateEngine = new SpringTemplateEngine(); 
    templateEngine.setTemplateResolver(this.templateResolver()); 
    templateEngine.setMessageSource(this.messageSource()); 
    templateEngine.addDialect(new LayoutDialect()); 

    return templateEngine; 
} 

@Bean 
public ViewResolver setupViewResolver() 
{ 
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); 
    viewResolver.setTemplateEngine(this.getTemplateEngine()); 
    viewResolver.setOrder(1); 

    return viewResolver; 
} 

@Bean 
public MessageSource messageSource() 
{ 
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); 
    messageSource.setBasename("messages"); 
    messageSource.setDefaultEncoding("UTF-8"); 
    messageSource.setCacheSeconds(3600); 

    return messageSource; 
} 

@Bean 
public LocaleResolver localeResolver() 
{ 
    CookieLocaleResolver resolver = new CookieLocaleResolver(); 
    resolver.setDefaultLocale(new Locale("pl")); 
    resolver.setCookieName("locale"); 
    resolver.setCookieMaxAge(86400); 

    return resolver; 
} 

@Override 
public void addInterceptors(InterceptorRegistry registry) 
{ 
    LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor(); 
    interceptor.setParamName("locale"); 
    registry.addInterceptor(interceptor); 
} 

@Override 
public void addResourceHandlers(final ResourceHandlerRegistry registry) 
{ 
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); 
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
} 
} 

Project structure - IMAGE

我试图模板移动到资源,但仍然一无所获。请帮忙。我没有更多的想法如何解决这个问题......它工作得更早,然后停下来。

+0

有一个叫做'login'在'文件夹templates'? –

回答

0

Thymeleaf Resolver将在templates/login/下查找login.html页面。根据您的项目结构和配置,您在模板内部有一个login文件夹,但在目录内没有login.html,这就是错误原因。

要么在登录文件夹内创建一个login.html,要么使用已在那里的index.html页面。在你的弹簧控制器中,你应该返回适​​当的页面。

例如,

假设你需要显示的登录页面控制器方法应该返回,

return "login/login" // to display login.html under `templates/login` 

return "login/index" // to display index.html under `templates/login`