Вопрос

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

<Ол>
  • Имейте основной контроллер, который сопоставлен с этим URL, а затем загрузите другие компоненты из файла jsp. Это выполнимо, но не похоже на хорошее решение.
  • Использование портлетов.
  • Я хочу знать, каковы лучшие практики. Это звучит как очень распространенная проблема веб-дизайна в средах MVC, как люди это делают?

    Это было полезно?

    Решение

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

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

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top