我试图使用stringLoader从DB加载一些Freemarker模板,并通过template.process执行它们,但问题是,Freemarker的东西像<#if······正在执行,但当我尝试执行assign JspTaglibs时,它会中断。
下面是一个简单的例子:
我从数据库中获得<#assign bean=jsptaglibs[“/WEB-INF/struts-bean.tld]>,并将其放入StringTemplateLoader中。我创建了configuration,template...到目前为止一切正常。当我执行template.process(data,out)时,页面报告:
我有一个场景,我有一些代码存储在数据库中,我希望在template.process()期间用freemarker执行它。这可能吗?如果可能,我做错了什么?
问题是jsptaglibs
不是FreeMarker的核心特性,而是FreeMarkerServlet
放入数据模型的特性,并且需要Servlet环境和HTTP请求(正如JSP所要求的那样)。开箱即用,无法将此特性从FreeMarkerServlet
中分离出来。然而,也许你可以扩展它,这样你仍然可以为你的目的使用它。大部分魔术发生在createmodel
中,其中,它将jsptaglibs
添加到数据模型中。
如果通过FreeMarker配置
为FreeMarker提供这样的
TemplateLoader
实现如果您只想从数据库中提供模板,而不是Struts传统上存储模板的地方,那么只需要提供适当的TemplateLoader
。