2017-05-01 3 views
0

は、次のJavaの変数の宣言を検討:Java変数を使用してベロシティテンプレートにHTMLを直接挿入することはできますか?

String s = "Please follow us on Facebook <a href=\"https://facebook.com/u/myuser\"> here</a>";

をそして、次のVelocityテンプレートを考えてみます。

<html> 
    <body> 
    ... 
    <div>$!s</div> 
    ... 
    </body> 
</html> 

予想通り、この作品は、でしょうか?そうではなく、Java変数を介してDOMに直接HTMLを挿入することは可能ですか?

私は想定していません - 私はHTML文字がエスケープされると思います。

できるだけ再利用するためにいくつかの一般的なテンプレートを作成していますので、おそらくこれを自分自身でテストすることになりますが、もし誰かが自分の時間を少しでも節約できたら彼らの頭の上を知っている。また、私は速度のドキュメントやstackoverflowでこれに関する情報を見つけることができませんでした。

答えて

2

はい、可能です。

Velocityは、HTMLのためだけに組み込まれていないため、HTML自体をエスケープしません。一般に、どのタイプのテキストを生成するのかはわかりません。

速度は、明示的に何が必要エスケープするのに使用できるエスケープツールが含まれていますhttps://velocity.apache.org/tools/1.4/generic/EscapeTool.html

あなたがHTMLを生成する速度を使用しようとしている場合は、私が使用のみの文字列変数にあなたをお勧めしますし、すべてエスケープしたいです変数を渡して出力します。エスケープしない変数が必要な場合は、ホワイトリスト(エスケープでエスケープしない変数名の明示的なリスト)を使用します。

このアプローチでは、 'デフォルトでエスケープ'ポリシーを実装できます。

+0

完璧なおかげでローマ – anon58192932

+1

@ anon58192932ようこそ!答えがあなたを助けたら、それを受け入れてください。 –

+0

は間違いありません。私は、クールダウン期間が答えを受け入れるのを待っていました。 – anon58192932

関連する問題