【问题标题】:How to configure Maven Freemarker to recognize `@include_page` tag?如何配置 Maven Freemarker 以识别 `@include_page` 标签?
【发布时间】: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 行上的语句,然后是关于使用默认值或 ifs 的说明

有谁知道使用它是否需要一些额外的配置?

【问题讨论】:

    标签: freemarker


    【解决方案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,并且默认情况下会暴露该指令。但似乎这个指令也可以独立工作。 (实际上,既然它在其构造函数中得到了所有需要的东西,也就不足为奇了。)
      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多