Solon自定义模板渲染器

  • 自定义模板渲染器,从数据库读取模板代码,然后进行渲染
  • 首先创建一个独特的 文件后缀,如 .xhtml
ModelAndView modelLayout = new ModelAndView("xxxx.xhtml");
  • 参考插件 solon.view.thymeleaf 的 src/main/java/org/noear/solon/view/thymeleaf/ThymeleafRender.java 中的代码,将 renderAndReturn 方法更改为从数据库读取模板代码,步骤如下:
  1. 注册文件后缀,在项目启动后注册
    ThymeleafRender render = ThymeleafRender.global();
    RenderManager.register(render);
    RenderManager.mapping(".xhtml", render);
     
  2. 首先创建一个 字符串模板解析器
    // 创建 Thymeleaf 模板引擎
    TemplateEngine templateEngine = new TemplateEngine();
    
    public ThymeleafRender(ClassLoader classLoader) {
            this.classLoader = classLoader;
    
             // 创建 Thymeleaf 字符串模板解析器
            StringTemplateResolver stringTemplateResolver = new StringTemplateResolver();
            templateEngine.setTemplateResolver(stringTemplateResolver);
            forDebug();
            forRelease();
    }
  3. 将 renderAndReturn 方法更改为如下
    public String renderAndReturn(Object obj, Context ctx) throws Throwable {
            if (obj == null) {
                return null;
            }
    
            if (obj instanceof ModelAndView) {
                org.thymeleaf.context.Context context = new org.thymeleaf.context.Context();
                context.setVariables(((ModelAndView) obj).model());
                StringWriter stringWriter = new StringWriter();
                String dynamicTemplate = "动态的代码";
                templateEngine.process(dynamicTemplate, context, stringWriter);
                return stringWriter.toString();
            } else {
                return obj.toString();
            }
        }
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    请登录后查看评论内容