主题:如何使用StringTemplateResourceLoader渲染web页面

magicpriest 9天前 36

闲大赋,你好:

       我的业务场景是这样的,模板文件是存储在数据库中;

       其中模板文件里使用到了 include和html标签,这些文件存放在另一个jar的resources目录下;例如:view

       现渲染页面的时候就是提示失败,我自己判断是读取资源文件不正确,不知如何设置参数,还望指导一下,

       不胜感激!

以下是我的代码:


//渲染参数

Configuration configuration = Configuration.defaultConfiguration();

configuration.setStatementStart("<!--#");

configuration.setStatementEnd("-->");

configuration.setErrorHandlerClass("org.beetl.ext.web.WebErrorHandler");

//模板加载器

GroupTemplate groupTemplate = BeetlUtil.createGroupTemplate(new StringTemplateResourceLoader(), configuration);

ClasspathResourceLoader cploder = new ClasspathResourceLoader( "view/");

groupTemplate.setResourceLoader(cploder);

//获取模板

Template template = BeetlUtil.getTemplate(groupTemplate, resourceHtml);

//渲染模板

String result = BeetlUtil.render(template, param);

闲大赋 9天前

你需要使用CompositeResourceLoader  或者其他方案能让beetl找到你的模板,CompositeResourceLoader可以包含多个资源加载器,以从不同地方加载模板,你需要告诉CompositeResourceLoader如何根据资源key找到不同的资源加载器,以官网文档例子,我觉得你应该是这样

CompositeResourceLoader loader = new CompositeResourceLoader();
loader.addResourceLoader(new StartsWithMatcher("view/").withoutPrefix(), classpathLoader);
loader.addResourceLoader(new AllowAllMatcher(), stringloader);

所有以view开头的资源,将使用classpathLoader,否则,使用默认