我正在开发一个 POC,我需要创建一个与 JSP 等效的 freemarker ftl。目的是找出创建 jsp 等效 ftl 文件的难易程度。我在 jsp 文件中遇到了一些 scriptlet,但不确定应该采用哪种方法在 ftl 中编写相同的代码。我应该创建支持 scriptlet 代码的标签吗.. 但是为每个 scriptlet 编写标签会太昂贵(可能我在这里完全错了)。我被困在这里。你能告诉我在 sriptlet 中编写相同代码的最佳方法吗?
谢谢,哈努曼特。
我正在开发一个 POC,我需要创建一个与 JSP 等效的 freemarker ftl。目的是找出创建 jsp 等效 ftl 文件的难易程度。我在 jsp 文件中遇到了一些 scriptlet,但不确定应该采用哪种方法在 ftl 中编写相同的代码。我应该创建支持 scriptlet 代码的标签吗.. 但是为每个 scriptlet 编写标签会太昂贵(可能我在这里完全错了)。我被困在这里。你能告诉我在 sriptlet 中编写相同代码的最佳方法吗?
谢谢,哈努曼特。
FreeMarker 和 JSP 之间的主要区别之一正是 FreeMarker 不支持模板中的任意 Java 代码片段。就涉及到关注点分离而言,这是一件非常好的事情。
如果您绝对需要将 JSP scriptlet 转换为 FreeMarker 模板,您应该首先检查 scriptlet 的实际作用。其中一些可能会被等效的宏替换;例如:
<% if (x < 3) { %>
可以很容易地替换为:
<#if (x < 3)>
你明白了。
剩余的 scriptlet 可以用自定义的 FreeMarker 宏替换,但您应该问自己这个问题:我在模板中做的不是太多吗?
至于编写一个可以包含 Java 代码的通用宏,这将是非常困难的,因为虽然 JSP 实际上是在运行时编译成 Servlet,但 FreeMarker 模板处理不涉及任何 Java 编译。这又是一件好事。