Компонентный контроллер в Spring-MVC - PullRequest
2 голосов
/ 17 сентября 2009

Я разрабатываю веб-приложение, которое требует загрузки нескольких компонентов на одной странице. (С точки зрения макета страницы похож на Google Reader) Мне нравится держать эти компоненты отдельно друг от друга (по причинам, таким как повторное использование). Например, у меня есть левая панель, которая позволяет пользователю перемещаться между несколькими фидами, на которые он подписан (специфично для пользователя), и справа мы показываем содержимое этого фида, и, возможно, правая панель, которая показывает некоторую конкретную информацию об этом конкретный корм. В моем понимании MVC и, в частности, Spring-MVC, каждый контроллер отвечает за всю страницу. Вот два решения, которые я придумала после небольшого исследования, и ни одно из них не звучит мне хорошо.

  1. Имейте главный контроллер, который сопоставлен с этим URL, и затем загружайте другие компоненты из файла jsp. Это выполнимо, но не похоже на хорошее решение.
  2. Использование портлетов.

Я хочу знать, каковы лучшие практики. Это звучит как очень распространенная проблема веб-дизайна в средах MVC, как люди это делают?

1 Ответ

1 голос
/ 17 сентября 2009

Контроллер Spring MVC обычно "отвечает" :-) за обработку определенного запроса , что не обязательно означает, что указанный запрос приводит к монолитной странице, представляемой пользователю.

Поскольку вы говорите о функциях, похожих на Google Reader, возможно, вы будете использовать AJAX для загрузки / навигации между различными компонентами на своей странице? В этом случае вы можете легко сопоставить 3 компонента с отдельными контроллерами (через отдельные URI), а также иметь один «основной» контроллер для первоначальной загрузки всей страницы.

Если это не так, и ваша страница статична, ваш контроллер может выступать в качестве своего рода «маршрутизатора», сначала создавая экземпляры ваших компонентов, а затем направляя команды / запросы к соответствующему компоненту по мере необходимости. Каждый компонент будет обновлять свою собственную часть модели, после чего ваш «основной» контроллер будет возвращать представление, которое будет отображено.

Можете ли вы использовать портлеты для этого? Конечно. Но если мы говорим об одной странице, это может быть немного излишним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...