![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет всем.
Сначала опишу, что есть. 1. View на JSF Faceletes 2. Вся JSF-конфигурация происходит через делегацию Spring. 3. Все, что дальше, думаю, понятно - бизнес-логика вызваеться Spring'ом Так вот стала такая задача: Появилось несколько заказчиков на приложение - и от начальства поступило желание максимально быстро адаптировать его под каждого. При чем разработка ведется на всех сразу. В большинстве своем разница всего лишь во внешнем виде: тема и расположение элементов на странице. Т.е. бизнес логика от заказчика к заказчику не меняется: одно и тоже, но картинка разная. Сами страницы мы разрабатываем так, что бы они максимально обслуживали дискретную порцию бизнес-данных. Т.е. если требуется отобразить список депозитов пользователя в виде списка, то так страница и называется. Просто она может от заказчика к заказчику по разному выглядеть, например, разные колонки этой таблицы хотят. А также возможна ситуация, что некоторые странички будут у них одинаковыми. Но в дальнейшем, если пожелает, что-то один из заказчиков поменять, мы должны максимально быстро ему предоставить такой интерфейс, при этом не затрагивая того, который будет для остальных. В общем, идея такая: Положить все странички в одну папку, в этой же папке для каждого заказчика создать подпапку, которая как-то будет его идентифицировать, а мы этот идентификатор будет получать при старте приложения уже на сервере у заказчика. В папочку заказчика положить копию страницы из корня и по его желанию "разметить". Так вот необходимо реализовать такой механизм получения этих страниц по такому принципу: попытаться найти страничку в папке заказчика, если нет, достать ее из корня. А вопрос у меня такой: возможно ли реализовать такой алгоритм, используя Spring MVC ViewResolver? Просто пока еще не сталкивался с ним: всегда хватало JSF. Я документацию почитал и исходники посмотрел. Сам пока ничего не пробовал: лень писать, если не уверен в решении. Возможно можно как-то используя UrlRewrite. И да самому можно написать. Но я больше склоняюсь к уже готовым решениям. Спасибо -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Не знаю как в спринге в JSF дело обстоит, но всегда есть возможность расширить имеющийся резолвер, основная задача которого находить нужный тебе view.
Как-то расширял AbstractCachingViewResolver, метод loadView, для работы с ajax'ом. Посмотри его. А при работе с JSF какой резолвер используется? |
|||
|
||||
| MisterCleric |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
А никакой. Сейчас вообще нет конфигурации
Из jsf вызываются бины как и обычно, только берутся они со SrpingContext Это сообщение отредактировал(а) MisterCleric - 11.2.2010, 16:38 -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||
|
|||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
MisterCleric, ну вьюхами в JSF наверно не бины являются - jsp, velociry шаблоны, какие-то штуки jsf'a? Я просто про jsf ваще не в курсе.
|
|||
|
||||
| MisterCleric |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Так, ну что. Вот мое решение:
1. Как я изначально и говорил, структура папок war'ника примерно такая: / page1.xhtml page2.xhtml /client1/ page1.xhtml /client2/ 2. Переход на эти ресурсы осуществляеться через виртуальный контекст, например так:
3. Web.xml на этот виртуальный контекст выходит такой:
4. Сам конфиг этого сервлета: viewResolver-servlet.xml
clientId получаю при старте приложения, и это являеться именем папки, где лежат странички под этого клиента 5. Сам MyInternalResourceViewResolver такой:
Т.е. я просто проверяю есть ли ресурс с таким именем по указанному пути. Если нет, то из-за view == null произойдет передача управления слудующему ViewResolver, который прочитает ресурс из корня. Ну вот, собственно, и все. Может кому-нибудь будет полезно. -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||||||
|
|||||||||
| sergioK |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
A не проще типа Selection fields и там заказчит выберет нужные ему поля , можно заготовить 2-3 варианта стандартных отображений и пусть каждый выбирает то что ему нравиться |
|||
|
||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
а кто за эти 2-3 варианта заплатит? Таково требование от начальства: решать проблемы по мере их поступления. -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |