2012-01-12 8 views
0

最近、私は春のフレームワークでビューテンプレートにapacheの速度を使用し、HTMLエンティティをエスケープするために、 "org.apache.velocity.tools.generic.EscapeTool"を導入しました。 "$ application"で名前が付けられた変数はすべて空白になります。 "$!application.name"。はEscapeToolの予約語である "アプリケーション"ですか?

速度ツール設定を削除したとき、 "$ application"を正しく読み込むことができます。だから誰もが "$アプリケーション"速度のエスケープツールで予約語か、私は構成時に間違いをするかどうか知っている?

Toolboxの設定:春豆のXMLで

<toolbox> 
    <tool> 
    <key>esc</key> 
    <scope>application</scope> 
    <class>org.apache.velocity.tools.generic.EscapeTool</class> 
    </tool> 
</toolbox> 

設定:テンプレートファイルで

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> 
    <property name="cache" value="true" /> 
    <property name="exposeSpringMacroHelpers" value="true" /> 
    <property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml" /> 
</bean> 

:事前に

<div class="description"> 
    <h2>Application Name:$!application.name</h2> 
</div> 

ありがとう!

答えて

1

EscapeToolはコンテキスト内に何も配置しないので、$ application変数をオーバーライドしていません。任意の変数をオーバーライドしているかを調べるために、あなたは

$application.class.name 

VelocityToolsを試してみてください$アプリケーションがテンプレートで使用されたときに自動的にするServletContextを返すんが、(ツール2.0の場合)、あなたがしたいかどうかを設定することができますユーザー設定変数(デフォルト)またはサーブレットAPIオブジェクトを優先します。私はそれがツール1.4で設定することができますが、私はあなたがそれを見ることができると確信していることを思い出させません。

いずれの場合でも、Tools 2.xでは予約されていませんが、デフォルト値もあります。予約済みのものとして動作しているので、私はあなたにuserOverwriteを無効にするか、ツール1.4を使用していると推測しています。

+0

ありがとうございます、1.4の問題です。依存関係を2.0に変更したとき、それは正常に動作します。 – jamee