Apache 是",;申请书;EscapeTool中的保留字?

Apache 是",;申请书;EscapeTool中的保留字?,apache,spring,velocity,Apache,Spring,Velocity,最近,我在spring框架中使用apache velocity作为视图模板,为了转义HTML实体,我引入了“org.apache.velocity.tools.generic.EscapeTool”,但是,我发现名为“$application”的变量现在无法工作,任何名为“$application”的变量都显示为空,例如“$!application.name” 当我删除velocity工具配置时,可以正确读取“$application”。所以有人知道“$application”是velocity

最近,我在spring框架中使用apache velocity作为视图模板,为了转义HTML实体,我引入了“org.apache.velocity.tools.generic.EscapeTool”,但是,我发现名为“$application”的变量现在无法工作,任何名为“$application”的变量都显示为空,例如“$!application.name”

当我删除velocity工具配置时,可以正确读取“$application”。所以有人知道“$application”是velocity escape工具中的保留字还是我在配置时出错了

工具箱配置:

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

电子稳定控制系统
应用
org.apache.velocity.tools.generic.EscapeTool
SpringBeans 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>

应用程序名称:$!application.name

提前谢谢

EscapeTool不会在上下文中放置任何内容,因此它不会重写$application变量。要找出重写任何变量的内容,可以尝试

$application.class.name
当模板中使用$application时,VelocityTools会自动返回servletContext,但是(在Tools 2.0的情况下)您可以配置是喜欢用户设置变量(默认值)还是ServletAPI对象。我不记得是否可以在Tools1.4中配置它,但我相信您可以查找它


在任何情况下,在Tools 2.x中,它都不是保留的,但它也有一个默认值。由于它的作用与保留的相同,我猜您要么关闭了userOverwrite,要么正在使用工具1.4。

谢谢,这是1.4的问题。当我将依赖项更改为2.0时,它运行良好。