2012-01-12 22 views
0

最近,我在spring框架中使用apache velocity來查看模板,爲了轉義HTML實體,我引入了「org.apache.velocity.tools.generic.EscapeTool」,然後,我找到了一個名爲with 「$ application」現在不能工作,任何以「$ application」命名的變量都顯示空白,例如「$!application.name」。是EscapeTool中的「應用程序」保留字嗎?

當我刪除速度工具配置時,可以正確讀取「$ application」。所以,任何人都知道,如果「$應用」速度轉義工具中的保留字或配置時出錯?

工具箱配置:

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

配置在彈簧豆XML:

<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的情況下),你可以配置是否要更喜歡用戶設置的變量(默認)或servlet api對象。如果可以在工具1.4中進行配置,我不會立即回想起來,但我相信你可以查看它。

在任何情況下,在工具2.x中,它不會被保留,但它也會帶有默認值。既然它是作爲那些保留的,我猜你要麼關閉userOverwrite,要麼使用工具1.4。

+0

謝謝,這是1.4的問題。當我將依賴關係更改爲2.0時,它工作正常。 – jamee 2012-02-01 08:14:33