Подтвердить что ты не робот

Нужно некоторое объяснение о BeanNameViewResolver

Я читаю документацию здесь: http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/servlet/view/BeanNameViewResolver.html

но я думаю, что документация spring иногда может становиться сложной и трудно понять, поэтому мне мало нужно объяснять этот класс.

4b9b3361

Ответ 1

Как описано в документации, BeanNameViewResolver разрешает View, объявленный как beans. Обычно вам это нужно для некоторых специальных целей.

Представьте себе, например, что один из ваших контроллеров должен отображать электронную таблицу Excel. Итак, вы подклассом AbstractExcelView и реализуете свою собственную логику для рендеринга электронной таблицы на основе значений модели:

public class MyExcelView extends AbstractExcelView { ... }

и объявите его как bean:

<bean id = "myExcelView" class = "MyExcelView" />

Затем объявление BeanNameViewResolver делает его доступным для контроллеров: когда контроллер возвращает ModelAndView с именем вида myExcelView, ваша таблица будет отображаться.

BeanNameViewResolver обычно используется в сочетании с каким-либо другим видомным резольвером, который обрабатывает "обычные" представления (так что если BeanNameViewResolver не может найти представление, другой распознаватель пытается его найти):

<bean class = "...BeanNameViewResolver">
    <property name = "order" value = "0" />
</bean>

<bean class = "...InternalResourceViewResolver">
    <property name = "order" value = "1" />
    ...
</bean>

Ответ 2

Действительно, документация не является фантастической.

Преобразователь вида в spring mvc - это bean, который переводит из имен представлений в представления.

Имя представления - простая строка. Он возвращается методом handleRequest() контроллера в объекте ModelAndView.

ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
    ....
    return ModelAndView("thisIsTheViewName", ...);
}

Это имя представления разрешено для реального класса представления с помощью распознавателя вида.

BeanNameViewResolver имеет легкую работу: он ищет вид bean в applicationContext, который имеет это имя представления как свой id.

<bean id="thisIsTheViewName" class="....MyView" />

Для простых приложений это может быть самый простой способ перевести из имени вида в режим просмотра.