- 自定义模板渲染器,从数据库读取模板代码,然后进行渲染
- 首先创建一个独特的 文件后缀,如 .xhtml
ModelAndView modelLayout = new ModelAndView("xxxx.xhtml");
- 参考插件 solon.view.thymeleaf 的 src/main/java/org/noear/solon/view/thymeleaf/ThymeleafRender.java 中的代码,将 renderAndReturn 方法更改为从数据库读取模板代码,步骤如下:
- 注册文件后缀,在项目启动后注册
ThymeleafRender render = ThymeleafRender.global(); RenderManager.register(render); RenderManager.mapping(".xhtml", render);
- 首先创建一个 字符串模板解析器
// 创建 Thymeleaf 模板引擎 TemplateEngine templateEngine = new TemplateEngine(); public ThymeleafRender(ClassLoader classLoader) { this.classLoader = classLoader; // 创建 Thymeleaf 字符串模板解析器 StringTemplateResolver stringTemplateResolver = new StringTemplateResolver(); templateEngine.setTemplateResolver(stringTemplateResolver); forDebug(); forRelease(); }
- 将 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
请登录后查看评论内容