Как вложить URL-адреса плагинов?

Я хотел бы создать «оболочку» проекта Grails, в котором функциональные возможности размещены в плагинах, с URL-адресами, разделенными по имени плагина.

Таким образом, URL-адреса подключаемого модуля Blog, используемого в проекте Shell, могут выглядеть так: /shell/blog/viewBlogPost

Но на самом деле я вижу, что все контроллеры плагинов ведут себя так, как будто они являются частью самого проекта оболочки: /shell/viewBlogPost

Есть ли способ объявить, что контроллеры плагина Blog будут доступны только по пути /blog в URL-адресе?


person slattery    schedule 25.07.2012    source источник


Ответы (3)


Похоже, плагины Grails не могут этого сделать. Проблема в том, что им не хватает инкапсуляции и компонуемости, что приводит к конфликтам артефактов:

  • Маршрутизация URL-адресов из плагинов просто объединяется и не может быть вложена
  • Контроллеры не имеют пространства имен
  • Службы не имеют пространства имен

Я открыл задачу: GRAILS-9300

У команды Grails есть предварительные планы по решению этой проблемы в версии 2.2 с помощью имя плагина как пространство имен для артефактов.

person slattery    schedule 10.10.2012

Да, ваши плагины могут регистрировать сопоставления URL-адресов так же, как и остальная часть вашего приложения-оболочки.

person cdeszaq    schedule 25.07.2012
comment
Я думал, что UrlMappings.groovy по умолчанию не включен в плагин? - person slattery; 26.07.2012
comment
Может ли проект Shell определить корневой URL для использования для каждого подключаемого модуля? - person slattery; 26.07.2012
comment
Я уверен, что это возможно, но по умолчанию он не настроен для работы таким образом, кроме проекта Shell, диктующего имя приложения. - person cdeszaq; 26.07.2012

Вы можете объявить UrlMappings в плагине, создав файл с именем, заканчивающимся на UrlMappings в вашем плагине (например, BlogPluginUrlMappings.groovy), и они будут объединены с UrlMappings основного приложения. Вы можете настроить сопоставления, начинающиеся с /blog/, для маршрутизации к контроллерам вашего плагина.

person Ken Liu    schedule 09.10.2012
comment
Спасибо за ответ. К сожалению, плагины Grails не могли сделать то, что я хотел, и я опубликовал еще один ответ с подробным описанием этого. - person slattery; 10.10.2012