является "приложением" зарезервированным словом в EscapeTool? - PullRequest
0 голосов
/ 12 января 2012

В последнее время я использую скорость Apache для шаблона представления в рамках Spring, и для того, чтобы экранировать сущность HTML, я ввел «org.apache.velocity.tools.generic.EscapeTool», однако затем я нашел переменную с именемс «$ application» теперь не может работать, потому что любая переменная с именем «$ application» отображается пустым, например, «$! application.name».

Когда я удалил конфигурацию инструмента скорости, «$ application» может бытьчитай правильно.Так что кто-нибудь знает, является ли "$ 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>

Заранее спасибо!

1 Ответ

1 голос
/ 12 января 2012

EscapeTool ничего не помещает в контекст, поэтому он не переопределяет вашу переменную $ application.Чтобы выяснить, что переопределяет любую переменную, вы можете попробовать

$application.class.name

VelocityTools автоматически возвращает servletContext, когда в приложении используется $ application, но (в случае Tools 2.0) вы можете настроитьхотите отдать предпочтение пользовательским переменным (по умолчанию) или объектам API сервлета.Я не припомню, если это можно настроить в Инструментах 1.4, но я уверен, что вы можете найти его.

В любом случае, в Инструментах 2.x это не зарезервировано, но этотакже поставляется со значением по умолчанию.Поскольку он действует так же, как и зарезервированный, я предполагаю, что вы либо отключили userOverwrite, либо используете Tools 1.4.

...