这对我来说的主要原因是能够通过html编辑器(如记事本++中的插件)打印我的freemarker代码。当我只使用<#else>时,缩进是错误的。当我使用< #else />时,没关系。它似乎到目前为止工作,但我不确定我是不是做了一些可怕的错误。
答案 0 :(得分:1)
<#... />
,包括#else
。 (不支持它的是那些在没有嵌套内容的情况下应该使用的内容,例如#list
和#if
。)但是,允许<#else />
而<#elseif ... />
实际上是遗留的错误。它们的工作方式与没有/
的情况相同,并且这个错误在FreeMarker 2.x中无法修复,以便向后兼容,因此无需担心。但它们原则上是不正确的,因为#else
和#elseif
在它们下面有嵌套内容(自己的块),因此实际上它们不会在标记之后立即关闭。相反,它们会被下一个<#else ...>
/ <#elseif ...>
或</#if>
隐式关闭。所以<#else />
是可以容忍的,但不是一个好的风格。
编辑器中的缩进,编辑器应该知道哪些指令支持嵌套内容。就像指令名是&#34; include&#34;一样,它知道在该标签之后不需要缩进。 #assign
/ #local
/ #global
有点棘手,因为它们有两种形式:<#assign x = ...>
和<#assign x>...</#assign>
。此外,有时会添加新指令的问题,因此编辑器仍然无法识别它们。幸运的是,这很少发生,所以这不是一个不可能的情况。