获取默认对象包装器的最佳做法是?

时间:2016-04-25 14:42:09

标签: freemarker

创建自定义方法时,我实现了TemplateMethodModelEx并返回SimpleSequence对象。 根据API,我应该使用这个构造函数:

SimpleSequence(ObjectWrapper wrapper)

因为我将incompatibleImprovements设置为2.3.24,所以doc说我可以简单地使用Configuration实例的getObjectWrapper()。我的问题是在实现TemplateMethodModelEx时,我无权访问当前配置,除非我将cfg传递给方法的构造函数。然后root.put看起来像:

root.put("getMeList", new GetMeListMethod(cfg));

这对我来说很奇怪,我想知道构造这种SimpleSquence模型的权利是什么,并且有正确的方法来获取默认的对象包装器。

非常感谢

1 个答案:

答案 0 :(得分:0)

您应该传递ObjectWrapper作为构造函数参数。 (它与incompatibleImprovements 2.3.24无关。)任何TemplateModel创建其他TemplateModel - s(如TemplteSequenceModel - s,TemplateHashModel - s,{{ 1}} - s)曾经像那样工作。这通常不明显,因为它们是由 TemplateMethodModel创建的。如果您手动执行ObjectWrapper - s(这很好),那么您将面对这一事实。