【问题标题】:Working with FTL and Servlets使用 FTL 和 Servlet
【发布时间】:2013-01-02 21:19:34
【问题描述】:

我可以使用请求使用诸如 setAttribute/setParameter 之类的方法将 FTL 文件中的对象变量传递给 Servlet 吗? 当我想从 FTL 向 servlet 发布请求时,没有关于如何将 FTL 与 Servlet 一起使用的明确文档。

我的 FTL 文件需要提交给一个 Servlet,我需要向该 Servlet 传递数据。

我正在从前一个 Servlet 将数据放入 FTL 文件,但我不知道如何将其发送到下一个 servlet。

这些 servlet 中的每一个都负责某些功能。

【问题讨论】:

  • FreeMarker API 谈论 Servlet (MVC) 与 .ftl 文件的交互,反之亦然。我指的是这个 URL:fmpp.sourceforge.net/freemarker/pgui_misc_servlet.html,它讨论了 Session/Request/Application 范围,但随后只能从 Servlet 端设置以在 FTL 内部使用。它没有说如果我需要更进一步怎么办!
  • 现在我在调用 FTL 的第一个 servlet 中设置会话中的数据,然后从 FTL 文件调用的第二个 servlet 中的会话中获取数据。看起来我无法编辑 FTL 文件中的 Request/Session/Application 对象。

标签: freemarker


【解决方案1】:

模板仅用作 MVC 视图,因此理论上您不应该在其中做类似的事情。我的意思是直接操作特定于 Servlet 的东西,或者任何与演示无关的东西。如果您的架构需要以 <@include_page .../> 无法执行的方式调用其他 servlet,请将其包装到自定义指令或自定义方法(TemplateDirectoveModelTemplateMethodModel 接口)中,当您查看时传达高级含义在模板中,并在 Java 实现中隐藏了血腥的技术细节,在那里你可以做任何你想做的事情,因为它是 Java。查看include_page 的实现可能是一个很好的起点。您可以将新指令或方法放入数据模型中,或放入Configuration 作为共享变量,或将其拉入#import-ed/#include-ed 通用模板和<#assign myDirective = 'com.example.MyDirective'?new()>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2012-04-19
    • 2020-04-25
    • 2011-12-13
    • 2011-01-02
    • 2014-10-27
    • 2015-07-30
    相关资源
    最近更新 更多