Как отключить ошибки VelocityViewResolver в Spring? - PullRequest
5 голосов
/ 04 февраля 2011

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

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

2011-02-04 13: 37: 15,074 ОШИБКА [http-8080-2] VelocityEngine: ResourceManager: невозможно найти ресурс 'foo.json.vm' в любом загрузчике ресурсов.

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

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

Ответы [ 3 ]

2 голосов
/ 16 февраля 2011

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

<logger name="org.apache.velocity.app">
    <level value="OFF" />
</logger>
1 голос
/ 26 августа 2012

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

1 голос
/ 29 июня 2011

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

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