在 freemarker 中使用成对标签而不是非成对标签可以吗?就像在 <#else /> 而不是 <#else> 中一样?
Is it ok to use pair tags instead of non-pair tags in in freemarker? As in <#else /> instead of just <#else>?
对我来说这样做的主要原因是能够通过 html 编辑器(就像记事本++中的插件)漂亮地打印我的 freemarker 代码。当我只使用 <#else> 时,缩进是错误的。当我使用 <#else /> 时,没问题。到目前为止它似乎有效,但我不确定我是否做错了什么。
大多数核心指令都支持 <#... />
,包括 #else
。 (不支持的是那些你不应该在没有嵌套内容的情况下使用的内容,比如 #list
和 #if
。)但是,允许 <#else />
和 <#elseif ... />
实际上是一个遗留错误。它们的工作方式与没有 /
时相同,并且为了向后兼容,FreeMarker 2.x 中不会修复此错误,因此无需担心。但它们原则上是不正确的,因为 #else
和 #elseif
在它们下面有它们的嵌套内容(自己的块),所以它们实际上并没有在标签之后立即关闭。相反,它们由下一个 <#else ...>
/<#elseif ...>
或 </#if>
隐式关闭。所以 <#else />
是可以容忍的,但不是一个很好的风格。
从编辑器的缩进来看,编辑器应该知道哪些指令是否支持嵌套内容。就像如果指令名称是 "include",那么它知道在该标记之后不需要缩进。 #assign
/#local
/#global
有点棘手,因为它们有两种形式:<#assign x = ...>
和 <#assign x>...</#assign>
。此外,有时会添加新指令,因此编辑器还无法识别它们。幸运的是,这种情况很少发生,所以这不是不可能的情况。
对我来说这样做的主要原因是能够通过 html 编辑器(就像记事本++中的插件)漂亮地打印我的 freemarker 代码。当我只使用 <#else> 时,缩进是错误的。当我使用 <#else /> 时,没问题。到目前为止它似乎有效,但我不确定我是否做错了什么。
<#... />
,包括 #else
。 (不支持的是那些你不应该在没有嵌套内容的情况下使用的内容,比如 #list
和 #if
。)但是,允许 <#else />
和 <#elseif ... />
实际上是一个遗留错误。它们的工作方式与没有 /
时相同,并且为了向后兼容,FreeMarker 2.x 中不会修复此错误,因此无需担心。但它们原则上是不正确的,因为 #else
和 #elseif
在它们下面有它们的嵌套内容(自己的块),所以它们实际上并没有在标签之后立即关闭。相反,它们由下一个 <#else ...>
/<#elseif ...>
或 </#if>
隐式关闭。所以 <#else />
是可以容忍的,但不是一个很好的风格。
从编辑器的缩进来看,编辑器应该知道哪些指令是否支持嵌套内容。就像如果指令名称是 "include",那么它知道在该标记之后不需要缩进。 #assign
/#local
/#global
有点棘手,因为它们有两种形式:<#assign x = ...>
和 <#assign x>...</#assign>
。此外,有时会添加新指令,因此编辑器还无法识别它们。幸运的是,这种情况很少发生,所以这不是不可能的情况。