2012-01-12 20 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