简体   繁体   中英

How to display both html and jsp files using viewResolvers

I am trying to make it so my project can display both thymeleaf html pages and jsp's however using the code below it seems to only be displaying my jsp's WebMvcConfig:

@Bean
public TemplateResolver templateResolver() {
    TemplateResolver templateResolver = new ServletContextTemplateResolver();
    templateResolver.setOrder(0);
    templateResolver.setPrefix(VIEWS);
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode("HTML5");
    templateResolver.setCacheable(false);
    return templateResolver;
}

@Bean
public SpringTemplateEngine templateEngine() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver());
    templateEngine.addDialect(new SpringSecurityDialect());
    return templateEngine;
}

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

@Bean
public InternalResourceViewResolver getInternalResourceViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setOrder(1);
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".jsp");
    return resolver;
}

Page1Controller (displaying jsp):

@Controller
public class Page1Controller {
    @RequestMapping("/page1")
    public String Page1() {
        return "page1/page1";
    }
}

SigninController (not displaying html):

@Controller
public class SigninController {

    @RequestMapping(value = "signin")
    public String signin() {
        return "signin/signin";
    }
}
Use multiple view revolvers with order value..

/* Thymeleaf configuration */  
@Bean  
public ServletContextTemplateResolver templateResolver() {  
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();  
templateResolver.setPrefix("/WEB-INF/views/");  templateResolver.setSuffix(".html");  templateResolver.setTemplateMode("HTML5");  
templateResolver.setOrder(1);  
return templateResolver;  
} 

@Bean  
public SpringTemplateEngine templateEngine(ServletContextTemplateResolver templateResolver){     
SpringTemplateEngine templateEngine = new SpringTemplateEngine();  templateEngine.setTemplateResolver(templateResolver);  
return templateEngine;  
} 

@Bean  
public ThymeleafViewResolver thymeleafViewResolver(SpringTemplateEngine templateEngine){  
ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();  thymeleafViewResolver.setViewNames(new String[]{"thymeleaf/*"});  thymeleafViewResolver.setTemplateEngine(templateEngine); 
return thymeleafViewResolver;  
} 

/* JSP view resolver */ 

@Bean  
public InternalResourceViewResolver jspViewResolver() {  
InternalResourceViewResolver resolver  = new InternalResourceViewResolver(); 
resolver.setPrefix("/WEB-INF/views/");  
resolver.setSuffix(".jsp");  
resolver.setViewClass(JstlView.class);  
return resolver;

}

I had to set orders on both of the resolvers and then in the thymeleaf resolver i had to exclude the folder containing the jsps. I did the following:

 @Bean
    public TemplateResolver templateResolver() {
        TemplateResolver templateResolver = new ServletContextTemplateResolver();
        templateResolver.setPrefix(VIEWS);
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setCacheable(false);
        return templateResolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());
        templateEngine.addDialect(new SpringSecurityDialect());
        return templateEngine;
    }

    @Bean
    public ThymeleafViewResolver viewResolver() {
        ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
        thymeleafViewResolver.setTemplateEngine(templateEngine());
        thymeleafViewResolver.setCharacterEncoding("UTF-8");
        String[] excludedViews = new String[] {"page1/page1"};
        thymeleafViewResolver.setExcludedViewNames(excludedViews);
        return thymeleafViewResolver;
    }

    @Bean  
    public InternalResourceViewResolver jspViewResolver() {  
    InternalResourceViewResolver resolver  = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/views/");  
    resolver.setSuffix(".jsp");  
    resolver.setViewClass(JstlView.class);  
    return resolver;

    }

This ment excluding the jsp views from the ThymeleafViewResolver. however i could put all of the fiels in one folder and exclude the folder. thanks for the help everyone.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM