繁体   English   中英

Spring MVC,FreeMarker和自定义TagLib

[英]Spring MVC & FreeMarker & Custom TagLib

在带有FreeMarker的Spring MVC环境中,我有一个自定义TagLib,它可以处理带有数据的ftl模板,并将结果写入标签的JSP上下文中。

当我从已解析的视图(意味着从控制器渲染的模板)调用此标记时,此行为是完全正确的。

controller
    -> FTL
        -> TagLib

但是,当我从模板中调用它并由同一标签的另一个实例处理时,出现错误(未定义标签),并且在FTL中添加#assign语句时,我也收到了错误(JspTagLibs一片空白)。

controller
    -> FTL
        -> TagLib
            -> FTL
                -> TagLib (crash!)

我该如何解决?

提前致谢

要从FTL调用JSP标记,需要一个特殊的模板上下文(在FTL术语中为数据模型)来实现。 我假设Spring为初始调用提供了这样的上下文。 但是,如果在第二种情况下从新的模板上下文开始(实际上是带有新的freemarker.core.Environment ),则将无法获得支持。 如果你并不真的需要一个新的模板背景下出现,你可以得到的Environment更高了静态Environment.getCurrentEnvironment()然后使用Environment. include Environment. include调用第二个FTL。 但是,您将在那里使用与最顶层FTL相同的模板创建的变量集。 (如果第二个FTL仅定义一个宏并对其进行调用,则可以有所改善,因为该宏至少可以具有本地变量。)因此,您可以在以下情况下尝试从更高的Environment重用dataModel (使用Environment.getDataModel() ):您称为第二个FTL。 我想它应该可以工作...从未尝试过。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM