Spring и сопоставители представления

действительно ли возможно использовать InternalResourceViewResolver и BeanNameViewResolver вместе в том же веб-приложении?

Я означаю InternalResourceViewResolver разрешать мой jsp.

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>

и вместо этого BeanNameViewResolver для разрешения моего Excel (я должен передать URL).

До свидания.Спасибо

5
задан axtavt 2 March 2010 в 22:27
поделиться

2 ответа

Да, вы можете объединить несколько резолверов. Spring перебирает их и использует первый резолвер, который способен разрешить заданное имя. Вы также можете установить свойство order в резолверах, чтобы указать порядок итерации.

3
ответ дан 13 December 2019 в 05:34
поделиться

В вашем контексте может быть сколько угодно разрешителей представлений, Spring будет перебирать их один за другим, пока не найдет тот, который разрешает представление.

Однако есть одна большая оговорка:

Примечание: При цепочке ViewResolvers, InternalResourceViewResolver always должен быть последним, так как он будет пытаться разрешить любое имя представления, независимо от того. существует ли базовый ресурс на самом деле существует.

Это "недостаток" API сервлета, поскольку InternalResourceViewResolver не имеет возможности узнать, существует ли ресурс, прежде чем попытаться его разрешить.

Поэтому убедитесь, что ваш BeanNameViewResolver определен до InternalResourceViewResolver, или явно укажите свойство order для каждого из них.

9
ответ дан 13 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: