springmvc 同类多视图解析器配置 thymeleaf freemarker 等

本文详细介绍了如何在后端配置中实现多前端资源解析,包括不同路径的模板解析,如front和admin视图路径,使用SpringResourceTemplateResolver和ThymeleafViewResolver进行解析器和视图解析器的配置,以及FreeMarker多视图解析器的配置方法。
很多业务场景需要多前端资源,不一定只有一个前端页面文件夹字,所以后台也需要配置相应的资源解析器

front视图路径:resources/front/
admin图路径:resources/admin/

此配置满足thymeleaf 解析不同路径的模板

 /** 后台用模板解析器 **/
 @Bean(value = "adminTemplateResolver")
    public SpringResourceTemplateResolver adminTemplateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setPrefix("resources/admin/");
        templateResolver.setSuffix(".html");
        templateResolver.setCharacterEncoding("utf-8");
        templateResolver.setOrder(0);
        templateResolver.setName("admin*");
        templateResolver.setCacheable(false);
        return templateResolver;
    }

    /**
     * @return
     * @apiNote 模板解析器
     * @author yepk
     */
    @Bean(value = "templateResolver")
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setPrefix("resources/front/");
        templateResolver.setSuffix(".html");
        templateResolver.setCharacterEncoding("utf-8");
        templateResolver.setOrder(1);
        templateResolver.setName("*");
        templateResolver.setCacheable(false);
        return templateResolver;
    }

    /**
     * @param templateResolver 解析器
     * @return org.thymeleaf.spring5.SpringTemplateEngine
     * @apiNote 解析器
     * @author yepk
     */
    @Bean(value = "templateEngine")
    public SpringTemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        return templateEngine;
    }

    @Bean(value = "adminTemplateEngine")
    public SpringTemplateEngine adminTemplateEngine(SpringResourceTemplateResolver adminTemplateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(adminTemplateResolver);
        return templateEngine;
    }

    /**
     * @param templateEngine 解析器
     * @return org.thymeleaf.spring5.view.ThymeleafViewResolver
     * @apiNote 视图解析器
     * @author yepk
     */
    @Bean
    public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine);
        resolver.setCharacterEncoding("UTF-8");
        return resolver;
    }

    @Bean
    public ThymeleafViewResolver adminViewResolver(SpringTemplateEngine adminTemplateEngine) {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(adminTemplateEngine);
        resolver.setOrder(0);
        //这个很重要 需要通过路劲来区分 去解析那个路径模板
        resolver.setViewNames(new String[]{"admin*"});
        resolver.setCharacterEncoding("UTF-8");
        return resolver;
    }
    
FreeMarker多视图解析器配置
    /**
     * 视图层解析器
     * 
     * @return FreeMarker view resolver
     */
    @Bean
    public ViewResolver viewResolver() {
        FreeMarkerViewResolver bean = new FreeMarkerViewResolver();
        bean.setOrder(0);
        bean.setViewClass(AdminFreeMarkerView.class);
        bean.setPrefix("/admin/");
        bean.setSuffix(".html");
        bean.setContentType("text/html;charset=UTF-8");
        cacheComponent.registerCachingViewResolverList(bean);
        return bean;
    }
    
     @Bean
    public ViewResolver viewResolver() {
        FreeMarkerViewResolver bean = new FreeMarkerViewResolver();
        bean.setOrder(0);
        bean.setViewClass(WebFreeMarkerView.class);
        bean.setPrefix("/admin/");
        bean.setSuffix(".html");
        bean.setContentType("text/html;charset=UTF-8");
        cacheComponent.registerCachingViewResolverList(bean);
        return bean;
    }
    
    

总之 通过设置视图名字 区分模板路径。。。
FreeMarker通过配置不同的 视图类来区分视图路径

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值