这是关于IncludeEventHandler的一个有趣的问题。
我正在开发一个基于Spring的应用程序,该应用程序使用具有不同 VENDORS 且具有单独投资组合站点的velocity。我让供应商通过提供存储数据库的Velocity模板来定制页面,并由速度引擎使用DataSourceResourceLoader获取。
我的表格有点像this。
供应商可以通过调用宏#parse
并传递他们的vendorid/template-name
来解析其他模板,使其看起来像这样。
#parse("20160109144/common-css.vm")
现在实际问题是根据vendorid获取模板。
我有一个类(扩展IncludeEventHandler
),它覆盖了includeEvent
方法。现在我该怎么做才能返回所需的模板?我不想更改名称,使它们看起来像20160109144/home.vm
答案 0 :(得分:1)
对于OP的问题,目的是为DataSourceResourceLoader提供替代行为。
不幸的是,Velocity Engine 1.7版无法更改用于检索模板的SQL语句。
DataSourceResourceLoader扩展了ResourceLoader抽象类。也就是说,如果你reference the source,你应该能够实现一个行为符合你想要的自定义ResourceLoader。
一个选项,来自DataSourceResourceLoader的大部分代码,并更改它确定从数据库加载的模板内容的方式。
我会转储所有与查询相关的资料,因为您将确定要为内容加载的特定列。 DataSourceResourceLoader实质上将模板的名称映射到数据库条目,您的实现基本上围绕您在上面定义的规则。
希望能为前进提供足够的帮助。我建议在调试器中将其拉出来,并确定什么是和没有传递给相关的加载方法。