配置 DataSourceResourceLoader
Configuring the DataSourceResourceLoader
参考我的 ,我想知道如何配置 DatasourceResourceLoader
以满足我的要求。
更具体地说,我是这样调用 #parse()
宏的。
#parse("$vendorid/template-name.vm")
我的 table 从中挑选模板的组织方式类似于 。
如何解释 #parse()
宏以仅选择针对特定 vendorid 放置的模板。
请注意以下几点:
- 我不想更改 table 结构或
name
列的值。
name
列可能包含冗余值,但 vendorid
和 name
的组合永远不会相同。
编辑
我知道 Velocity 的 IncludeEventHandler
,如果我可以通过覆盖此事件来解决我的问题,我该怎么做?
Velocity 的 IncludeEventHandler
无法解决您的问题,因为它只能更改资源的路径,而不能获取资源本身。
不过,您可以在数据库端创建一个视图,让您可以完全按照自己的需要获取模板:
CREATE VIEW templates_view (id VARCHAR(100), html CLOB, ts DATETIME)
AS SELECT CONCAT(vendorid, '/', name) FROM templates;
这是 MySQL 语法,对于其他引擎,您将使用 TIMESTAMP 类型 and/or ||连接运算符,根据需要...
这样您就可以通过一个键列访问您的模板,并可以初始化 DatasourceResourceLoader 以使用此视图。
根据 回复,使用 ResouceLoader
扩展 class 并将其用作 DataSourceResourceLoader
可以无缝工作。
参考我的 DatasourceResourceLoader
以满足我的要求。
更具体地说,我是这样调用 #parse()
宏的。
#parse("$vendorid/template-name.vm")
我的 table 从中挑选模板的组织方式类似于
如何解释 #parse()
宏以仅选择针对特定 vendorid 放置的模板。
请注意以下几点:
- 我不想更改 table 结构或
name
列的值。 name
列可能包含冗余值,但vendorid
和name
的组合永远不会相同。
编辑
我知道 Velocity 的 IncludeEventHandler
,如果我可以通过覆盖此事件来解决我的问题,我该怎么做?
Velocity 的 IncludeEventHandler
无法解决您的问题,因为它只能更改资源的路径,而不能获取资源本身。
不过,您可以在数据库端创建一个视图,让您可以完全按照自己的需要获取模板:
CREATE VIEW templates_view (id VARCHAR(100), html CLOB, ts DATETIME)
AS SELECT CONCAT(vendorid, '/', name) FROM templates;
这是 MySQL 语法,对于其他引擎,您将使用 TIMESTAMP 类型 and/or ||连接运算符,根据需要...
这样您就可以通过一个键列访问您的模板,并可以初始化 DatasourceResourceLoader 以使用此视图。
根据 ResouceLoader
扩展 class 并将其用作 DataSourceResourceLoader
可以无缝工作。