【问题标题】:Thymeleaf org.thymeleaf.exceptions.TemplateInputException: Error resolving templateThymeleaf org.thymeleaf.exceptions.TemplateInputException:解析模板时出错
【发布时间】:2016-12-21 15:42:49
【问题描述】:

我尝试了很多解决方案,但都不起作用。我正在使用 Intellij 2016.1。 我无法强制应用解析模板。

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

我尝试将模板移动到资源中,但仍然没有。请帮忙。我不知道如何解决这个问题......它之前工作过,然后停止了。

【问题讨论】:

  • templates中是否有一个名为login的文件夹?

标签: spring templates model-view-controller intellij-idea thymeleaf


【解决方案1】:

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`

【讨论】:

    猜你喜欢
    • 2021-11-05
    • 2017-06-29
    • 2021-10-19
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多