В течение многих лет я сильно привязывался к шаблону проектирования Model-View-Controller и его преимуществам. Но я изо всех сил стараюсь в полной мере использовать эти преимущества, когда речь идет о веб-приложениях.
Если бы я создал компонент UsersComponent, который состоит из:
- список пользователей
- текстовое поле, которое активно фильтрует этот список пользователей
Тогда в Java Swing вы можете легко создать класс UserComponent, который расширяет JPanel, а внутри UserComponent вы можете моделировать, просматривать и контролировать классы. И в итоге вы получите очень легко используемый компонент.
Теперь я хотел бы подражать этому в Java-EE. Строковые шаблоны, кажется, обеспечивают решение для этого. НО, с добавленным поворотом. Мне нравятся веб-дизайнеры. И я хотел бы предоставить им возможность добавлять компоненты, не прибегая к помощи разработчика и не обращая внимания на то, какую точку входа они должны использовать.
Например, допустим, у нас есть шаблон базовой страницы, и дизайнер хочет добавить компонент UserComponent где-нибудь на этой странице. Затем вам нужно будет заполнить модель, в большинстве случаев на основе некоторых параметров запроса.
Итак, вот актуальный вопрос. Кто-нибудь знает способ определения, какие шаблоны включены в данный шаблон. Таким образом, вы могли бы проанализировать этот шаблон во время выполнения (или, точнее, каждый раз, когда он был изменен) и выполнить соответствующую служебную работу в контроллере главной страницы?
В принципе, чтобы я мог выполнить это:
- Дизайнер создает шаблон строки. Скажи, MyPage.st
- Переписать изменения модуля www.mydomain.com/IgnoredFolderNameForSeo/MyPage на www.mydomain.com/pagerenderservlet?templateName=MyPage
- сервлет рендеринга страницы загружает шаблон строки на основе параметра, анализирует его, чтобы определить, какие компоненты используются в шаблоне строки, и инициализирует их при необходимости.
В настоящее время лучшее решение, которое мне удалось найти, - это иметь разные сервлеты для разных базовых страниц, которые предоставляют разные подмножества функций. Но я совсем не доволен этим решением. Было бы намного аккуратнее, если бы была возможность обрабатывать его динамически. По сути, наличие обработчиков для ВСЕХ поддерживаемых компонентов, но только инициализация / обработка тех, которые действительно необходимы.
Мне бы очень хотелось услышать ваши мысли парней по этому поводу:)
** ОБНОВЛЕНИЕ **
Я думаю, что мои упоминания о качелях немного запутали этот вопрос. Я хотел бы создать компоненты, доступные для веб-дизайнеров через шаблоны строк, которые они затем могут включить в любой шаблон строки.
Так что я полагаю, все сводится к этому.
Известно ли любому телу каркас шаблона строки, который позволяет мне определить во время выполнения, какие другие шаблоны строки включены в шаблон строки.