どのように私は、行の先頭に2つの「#1」のlitteralsを出力速度テンプレートを作成するのですか?

StackOverflow https://stackoverflow.com/questions/682347

  •  22-08-2019
  •  | 
  •  

質問

私は¨##はFoo」で始まるいくつかの行を持って速度ドキュメントを作成する必要がありますが、#は、速度指示命令であるから、それは私のために働いていません。

私は私の出力のドキュメントが見えるようにしたい何ます:

## Foo this
## Bar that
k1, v1
k2, v2
k3, v3

エスケープは、私が期待どのように働いていません。

#s)は、アンエスケープされているとして、以下に、明らかに、機能しません。
## Foo this
## Bar that
#foreach( $foo in $bar )
$foo.key, $foo.value
#end

##行は表示されません - 再び、予想通り。しかし、エスケープで私の試みはどちらか動作しません。エスケープ解決策1:

\## Foo this
\## Bar that
#foreach( $foo in $bar )
$foo.key, $foo.value
#end

またはこの、エスケープ解決策2:

\#\# 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

この最後のものは本当に私を混同しています。

任意のアイデア?

役に立ちましたか?

解決 3

ため息....単一引用符と二重引用符の間に違いがあります。予想されるように、これは動作します:

#set($msg = '##') 
$msg Foo this

どの私が望んでいたまさに出力します:

## Foo this

ベロシティユーザーガイドでから:

  

シングル引用符があるとして引用値が基準に割り当てられることを保証します。二重引用符を使用すると、「こんにちは$名」

としての速度の参照と補間するディレクティブを使用することができます

(私はまだ\#\#動作しない理由として困惑しています。)

他のヒント

Velocityコンテキストするます:

${esc.h}${esc.h}

あなたは org.apache.velocity.tools .generic.EscapeTool にしたり、コンテキストと同様に、あなたは3回目の少し変更したバージョンを使用することができます:

#set($msg = "#") 
${msg}${msg} Foo this

「##」は、おそらくあなたの問題の始まりであるVTLで1行コメントの区切り文字です。

## This is a comment
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top