Как отключить VelocityViewResolver ошибки весной?


Я использую скорость и пружину. В течение весны я использую VelocityViewResolver в паре с ContentNegotiatingViewResolver. По большей части, это работает отлично. Единственная проблема заключается в том, что ContentNegotiatingViewResolver запрашивает VelocityViewResolver с множеством различных наборов содержимого (как и должно быть).

Когда двигатель скорости не находит конкретный шаблон, возникает ошибка, подобная следующей:

2011-02-04 13:37:15,074 ошибка [http-8080-2] VelocityEngine: ResourceManager: не удается найти ресурс ' foo.формат JSON.ВМ' в любом загрузчике ресурсов.

Это не идеально. В идеале, если шаблон не найден, будет выдано предупреждение или что-то подобное. Если шаблон не существует для определенного типа контента, мне все равно... поскольку это означает, что тип контента не поддерживается через этот распознаватель представлений.

Любая идея о том, как я мог бы подавить эту ошибку, хотя VelocityViewResolver, VelocityView, или ContentNegotiatingViewResolver?

3 5

3 ответа:

Итак, я обнаружил, что лучший способ сделать это-добавить оператор logger в мой конфигурационный файл журнала специально для движка Velocity (Velocity и мой проект используют ведение журнала Commons). Мое утверждение logger выглядит следующим образом:

<logger name="org.apache.velocity.app">
    <level value="OFF" />
</logger>

Проблема будет исправлена весной 3.2, см. SPR-8640. После этого улучшения вы сможете настроить Velocity view resolver для проверки неразрешенных представлений только один раз.

Это происходит потому, что ваш ContentNegotiatingViewResolver использует VelocityViewResolver. Вы можете остановить его от этого, предоставив ему пустой (но ненулевой) список разрешителей представлений.

<bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    ...
    <property name="viewResolvers">
          <list />
    </property>
</bean>