如何配置 Maven Freemarker 以识别 `@include_page` 标签?
Posted
技术标签:
【中文标题】如何配置 Maven Freemarker 以识别 `@include_page` 标签?【英文标题】:How to configure Maven Freemarker to recognize `@include_page` tag? 【发布时间】:2021-09-18 07:35:58 【问题描述】:我正在尝试使用来自 FreemarkerServlet 的 @include_page
宏 - 使用带有 Freemarker 版本 2.3.31 的 Maven Freemarker 框架,我可以看到有关此标签的注释现在可以在它的源代码中找到,但它仍然不是在实际模板输出中解析/识别。
对于上下文:
一切都已完全配置并使用纯 ftl 按预期工作 我们依赖于对部分输出使用仅 JSP 模板(而主代码库仅使用 .ftl 模板)@include_page
允许将 jsp 页面包含到 ftl 中
我如何尝试:
在WEB-INF/views目录下,假设有一个home.ftl
用<h2>Hello!</h1>
添加hello.jsp
在 home.ftl 中
<#assign....>
.
.
.
<div>
<@include_page path="hello.jsp"/>
</div>
.
.
.
这会导致错误,即在 null 上找不到 include_page 行上的语句,然后是关于使用默认值或 if
s 的说明
有谁知道使用它是否需要一些额外的配置?
【问题讨论】:
【参考方案1】:问题是我们需要添加
model.put( FreemarkerServlet.KEY_INCLUDE, new IncludePage( request,
response ) );
到 FreemarkerView 模型。
This is the post确实解决了问题。
【讨论】:
【参考方案2】:要使用 JSP 支持(include_page
是其中的一部分),您必须调用模板并转发到映射到 FreemarkerServlet
的 URL,而不是直接使用其 Java API 调用 FreeMarker。这就是 JSP 的工作方式(或者最初是这样工作的)。详情请见https://freemarker.apache.org/docs/pgui_misc_servlet.html。
【讨论】:
不,这不是问题所在。如果您查看 OP 中链接的文档,您会发现您应该直接调用 api。 整个链接页面大约是FreemarkerServlet
,并且默认情况下会暴露该指令。但似乎这个指令也可以独立工作。 (实际上,既然它在其构造函数中得到了所有需要的东西,也就不足为奇了。)以上是关于如何配置 Maven Freemarker 以识别 `@include_page` 标签?的主要内容,如果未能解决你的问题,请参考以下文章
使用 maven、spring、freemarker 等帮助设置 YUI Compressor 以适应不同的环境(测试/开发/生产)
如何在 Maven 中使用模板代码生成器(例如 freemarker)?