需求:将 HTML Template存在数据库里,随时修改,类似于主题模板,运行期添加新主题。
用法1:
import com.jfinal.plugin.ehcache.CacheKit; import com.jfinal.template.source.FileSource; public class PageSource extends FileSource { //... @Override public StringBuilder getContent() { StringBuilder ret=new StringBuilder(); ret.append("#define ").append(this.getFileName()).append("()").append('\n'); //从数据库里取模板 ret.append("从数据库里取模板").append('\n'); ret.append("#end"); } }
添加模板
Engine.use().addSharedFunction(new PageSource("/","testPage"));
页面中使用 找不到
#@testPage()
Caused by: com.jfinal.template.TemplateException: Template function not defined: testPage
用法2:
import com.jfinal.template.source.ISource; public class PageSource implements ISource { private String fileName; //... @Override public StringBuilder getContent() { StringBuilder ret=new StringBuilder(); ret.append("#define ").append(fileName).append("()").append('\n'); //从数据库里取模板 ret.append("从数据库里取模板").append('\n'); ret.append("#end"); } }
添加模板
Engine.use().addSharedFunction(new PageSource("/","testPage"));
页面中使用 找不到
#@testPage()
Caused by: com.jfinal.template.TemplateException: Template function not defined: testPage
如果运行期添加模板?
Engine.use().getTemplateByString(stringValue).render(...);
可以做一个自定义指令用上上面的代码,然后这样用:
#stringTemplate(stringValue);