действительно ли возможно использовать InternalResourceViewResolver и BeanNameViewResolver вместе в том же веб-приложении?
Я означаю InternalResourceViewResolver разрешать мой jsp.
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
и вместо этого BeanNameViewResolver для разрешения моего Excel (я должен передать URL).
До свидания.Спасибо
Да, вы можете объединить несколько резолверов. Spring перебирает их и использует первый резолвер, который способен разрешить заданное имя. Вы также можете установить свойство order
в резолверах, чтобы указать порядок итерации.
В вашем контексте может быть сколько угодно разрешителей представлений, Spring будет перебирать их один за другим, пока не найдет тот, который разрешает представление.
Однако есть одна большая оговорка:
Примечание: При цепочке
ViewResolvers
,InternalResourceViewResolver
always должен быть последним, так как он будет пытаться разрешить любое имя представления, независимо от того. существует ли базовый ресурс на самом деле существует.
Это "недостаток" API сервлета, поскольку InternalResourceViewResolver
не имеет возможности узнать, существует ли ресурс, прежде чем попытаться его разрешить.
Поэтому убедитесь, что ваш BeanNameViewResolver
определен до InternalResourceViewResolver
, или явно укажите свойство order
для каждого из них.