2017-08-25 32 views
1

我試圖使用thymeleaf 3.0.7.RELEASE與基於spring mvc java的配置。Thymeleaf:org.thymeleaf.exceptions.TemplateInputException

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.sagar") 
public class MvcConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware{ 

    @Autowired 
    RoleToUserProfileConverter roleToUserProfileConverter; 

    private ApplicationContext applicationContext; 

    public void setApplicationContext(ApplicationContext applicationContext) { 
     this.applicationContext = applicationContext; 
    } 

    @Bean 
    public ViewResolver viewResolver() { 
     ThymeleafViewResolver resolver = new ThymeleafViewResolver(); 
     resolver.setTemplateEngine(templateEngine()); 
     resolver.setCharacterEncoding("UTF-8"); 
     return resolver; 
    } 

    @Bean 
    public TemplateEngine templateEngine() { 
     SpringTemplateEngine engine = new SpringTemplateEngine(); 
     engine.setEnableSpringELCompiler(true); 
     engine.setTemplateResolver(templateResolver()); 
     return engine; 
    } 

    private ITemplateResolver templateResolver() { 
     SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); 
     resolver.setApplicationContext(applicationContext); 
     resolver.setPrefix("/WEB-INF/templates/"); 
     resolver.setTemplateMode(TemplateMode.HTML); 
     return resolver; 
    } 

    public void addResourceHandlers(ResourceHandlerRegistry registry){ 
     registry.addResourceHandler("/static/**").addResourceLocations("/static/"); 

    } 
} 

springsecurity配置類中的方法。

@Autowired 
    public void configureGlobalSecurity(AuthenticationManagerBuilder auth) 
    throws Exception{ 
     auth.userDetailsService(userDetailsService); 
     auth.authenticationProvider(authenticationProvider()); 
    } 

    protected void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests() 
       .antMatchers("/").permitAll() 
       .antMatchers("/admin/list") 
       .access("hasRole('USER') or hasRole('ADMIN') or hasRole('DBA')") 
       .antMatchers("/newuser/**", "/delete-user-*").access("hasRole 
       ('ADMIN')").antMatchers("/edit-user-*") 
       .access("hasRole('ADMIN') or hasRole('DBA')").and().formLogin() 
       .loginPage("/login") 
       .loginProcessingUrl("/login").usernameParameter("ssoId"). 
       passwordParameter("password").and() 
       .rememberMe().rememberMeParameter("remember-me"). 
       tokenRepository(tokenRepository) 
       .tokenValiditySeconds(86400).and().csrf().and().exceptionHandling() 
       .accessDeniedPage("/Access_Denied"); 
    } 

和我home.html的文件

<!DOCTYPE html> 
<html lang="en" xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 

this is home page using thymeleaf 

</body> 
</html> 

我的pom.xml依賴包括

<dependency> 
    <groupId>org.thymeleaf</groupId> 
    <artifactId>thymeleaf-spring4</artifactId> 
    <version>3.0.7.RELEASE</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf --> 
<dependency> 
    <groupId>org.thymeleaf</groupId> 
    <artifactId>thymeleaf</artifactId> 
    <version>3.0.7.RELEASE</version> 
</dependency> 

春季安全的版本是4.2.3.RELEASE春季版4.3.9.RELEASE

我得到的錯誤是: -

Message Request processing failed; nested exception is 
org.thymeleaf.exceptions.TemplateInputException: 
An error happened during template parsing 
(template: "ServletContext resource [/WEB-INF/templates/home]") 


Root Cause 

java.io.FileNotFoundException: Could not open ServletContext 
resource [/WEB-INF/templates/home] 

Root Cause 

org.thymeleaf.exceptions.TemplateInputException: 
An error happened during template parsing 
(template: "ServletContext resource [/WEB-INF/templates/home]") 

回答

3

templateResolver方法需要修復。

  1. 嘗試設置後綴

    resolver.setSuffix(".html"); 
    
  2. 嘗試設置正確TemplateMode

    resolver.setTemplateMode("HTML5"); 
    

我想這應該解決的問題

+0

非常感謝resolver.setSuffix(」 .html「)工作。 –

+0

@sagarlimbu如果sushil的答案解決了問題,請將其標記爲已解決 – juanlumn