Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java velocity指令是否也添加空白?_Java_Templates_Velocity - Fatal编程技术网

Java velocity指令是否也添加空白?

Java velocity指令是否也添加空白?,java,templates,velocity,Java,Templates,Velocity,我刚刚了解到,对于ApacheVelocity,指令也会添加到空白中 例如: #foreach ($record in $rows) #foreach($value in $record) $value #end #end 有了这样的东西,我最终得到了#foreach语句、#end语句等的额外行 这不是我想要的,所以我发现我可以像这样阻止行末尾的注释: #foreach ($record in $rows)#* *##foreach($value in $record)#* *#$val

我刚刚了解到,对于ApacheVelocity,指令也会添加到空白中

例如:

#foreach ($record in $rows)
#foreach($value in $record)
$value  
#end

#end
有了这样的东西,我最终得到了
#foreach
语句、
#end
语句等的额外行

这不是我想要的,所以我发现我可以像这样阻止行末尾的注释:

#foreach ($record in $rows)#*
*##foreach($value in $record)#*
*#$value    #*
*##end

#end
但这本书读起来很难看。有没有办法告诉velocity引擎不要格式化我的指令

也许我做错了什么


谢谢。

我想你已经习惯了(见文章),尽管行注释会更整洁一些:

#foreach ($record in $rows)##
#foreach($value in $record)##
$value    ##
#end

#end
或者你可以把所有的东西都挤在一条线上:

#foreach($record in $rows)#foreach($value in $record)${value}#{end}#{end}

这实际上是几乎所有模板语言的共同点,推理直接来自简化的处理。考虑下面的例子(这实际上是GrARS使用的GSP,但想法是一样的):


${x.y}
处理这种情况的方法是首先识别一个标记(或Velocity的情况下的指令)。由于标记/指令本身包含处理标记正文的指令,因此标记/指令标记将被删除,并且起始标记之后和结束标记之前的所有内容将用作处理目标。这包括所有的空白,因为事先清理输出要困难得多


当然,这并不意味着你不能这样做,正如Edd指出的,或者这将是最明智的设计选择,但有时做得更简单比生成漂亮的标记更重要——毕竟,大多数(如果不是所有的话)标记处理器并不真正关心您是否有
某些内容
某些内容\n\n\t\t内容

,这是一件总是让我对Velocity感到恼火的事情——我使用它来生成Java,所以我可以在生成后在IDE中格式化它。JET(Java emitter templates)似乎没有遇到这个问题。这似乎是人们后来忍受和整理的东西,例如,关于一代又一代地整理HTML。嗯,这太糟糕了。我想我的“变通”就得这样了。你用的是什么版本?这是一个长期存在的问题,现在已经接近5-8年了。现在,你可能需要,也可能不需要。块注释或EOL
###
注释是链接有趣的规范解决方案…尤其是schmoo部分。。。???!!!这个不适合我。只需将宏放在一行就行了。你知道为什么会这样吗?
<g:each var="x" in="exes">
    ${x.y}
</g:each>