3

いくつかの行の前に¨##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

この最後のものは本当に私を混乱させました。

何か案は?

4

4 に答える 4

4

Velocityコンテキストを使用します:

${esc.h}${esc.h}
于 2009-03-25T16:32:31.827 に答える
3

org.apache.velocity.tools.generic.EscapeToolまたは同様のコンテキストを追加したくない場合は、3回目の試行のわずかに変更されたバージョンを使用できます。

#set($msg = "#") 
${msg}${msg} Foo this
于 2009-03-25T16:44:03.283 に答える
3

ため息....一重引用符と二重引用符には違いがあります。これは期待どおりに機能します。

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

これは私が欲しかったものを正確に印刷します:

## Foo this

Velocityユーザーガイドから:

一重引用符を使用すると、引用符で囲まれた値がそのまま参照に割り当てられます。二重引用符を使用すると、「Hello $ name」など、速度参照とディレクティブを使用して補間できます。

(\#\#が機能しない理由についてはまだ困惑しています。)

于 2009-03-28T00:13:26.557 に答える
-1

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

## This is a comment
于 2009-03-25T16:27:49.547 に答える