最近,我在spring框架中使用apache velocity作为视图模板,为了逃避HTML实体,我引入了" org.apache.velocity.tools.generic.EscapeTool"然而,然后,我找到了以" $ application"命名的变量。现在无法工作,任何用" $ application"命名的变量显示空白,例如"!$ application.name"
当我删除速度工具配置时," $ application"可以正确阅读。所以任何人都知道" $应用程序"速度转义工具中的保留字,或者我在配置时出错?
工具箱配置:
<toolbox>
<tool>
<key>esc</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.EscapeTool</class>
</tool>
</toolbox>
配置spring-beans 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>
提前致谢!
答案 0 :(得分:1)
EscapeTool不会在上下文中放置任何内容,因此它不会覆盖您的$ application变量。要找出覆盖任何变量的内容,您可以尝试
$application.class.name
当在模板中使用$ application时,VelocityTools会自动返回servletContext,但是(在Tools 2.0的情况下),您可以配置是否要更喜欢用户设置变量(默认值)或servlet api对象。我不会随便回想一下是否可以在工具1.4中配置它,但我确定你可以查找它。
在任何情况下,在Tools 2.x中,它都不是保留的,但它也带有默认值。由于它是作为它保留的那些,我猜你要么关闭userOverwrite,要么使用工具1.4。