Java 如何创建输出两个'#';在队伍的开头有垃圾吗?
我需要创建一个velocity文档,其中某些行的前缀为¨###Foo“,但由于Java 如何创建输出两个'#';在队伍的开头有垃圾吗?,java,velocity,Java,Velocity,我需要创建一个velocity文档,其中某些行的前缀为¨###Foo“,但由于是velocity指令命令,因此它对我不起作用 我希望我的输出文档的外观: ## Foo this ## Bar that k1, v1 k2, v2 k3, v3 转义未达到我的预期效果。显然,以下内容不起作用,因为#s未转义): ###行没有显示--再次,正如预期的那样。但是,我尝试的转义也不起作用。转义解决方案一: \## Foo this \## Bar that #foreach( $foo in $bar
是velocity指令命令,因此它对我不起作用
我希望我的输出文档的外观:
## Foo this
## Bar that
k1, v1
k2, v2
k3, v3
转义未达到我的预期效果。显然,以下内容不起作用,因为#
s未转义):
###行没有显示--再次,正如预期的那样。但是,我尝试的转义也不起作用。转义解决方案一:
\## Foo this
\## Bar that
#foreach( $foo in $bar )
$foo.key, $foo.value
#end
或者这个,逃避解决方案二:
\#\# Foo this
\#\# Bar that
#foreach( $foo in $bar )
$foo.key, $foo.value
#end
甚至这个
# set($msg = "##")
$msg Foo this
$msg Bar that
#foreach( $foo in $bar )
$foo.key, $foo.value
#end
最后一个真的把我弄糊涂了
有什么想法吗?“##”是VTL中的单行注释分隔符,这可能是问题的开始
## This is a comment
使用:
如果您不想添加或类似于您的上下文,可以使用稍微修改过的第三次尝试版本:
#set($msg = "#")
${msg}${msg} Foo this
唉……单引号和双引号之间有区别。这就像预期的那样有效:
#set($msg = '##')
$msg Foo this
打印出我想要的东西:
## Foo this
从:
单引号将确保引用值按原样分配给引用。双引号允许您使用velocity引用和指令进行插值,例如“Hello$name”
(我仍然不明白为什么\#\#\#不起作用。)显然,以及为什么我在问题中陈述了这么多。这是可行的,而且不需要弄乱上下文(这需要我修改代码)。太棒了。我不明白为什么“#\#”不起作用,但这是2倍#“是的P但是,我不是在抱怨……这很有效!我假设当Velocity解析模板时,首先提取注释。因此,模板中双哈希之后的所有内容都将完全消失。但我只是在猜测。
#set($msg = '##')
$msg Foo this
## Foo this