需求:将 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);