Grails: Как ссылаться на ресурс, расположенный внутри установленного плагина? - PullRequest
6 голосов
/ 03 февраля 2011

У меня есть плагин Grails, который я использую в качестве контейнера для некоторых общих статических ресурсов, которые будут использоваться различными другими проектами Grails (CSS, JS-файлы и т. Д.).Идея использования плагина состояла в том, чтобы просто поделиться этими вещами - плагин на самом деле не делает ничего более интересного.Как лучше всего ссылаться на ресурсы внутри плагина?Я бы предпочел не создавать пользовательские теги, так как я не добавляю здесь никакой функциональности;Я просто хочу получить доступ к ресурсам внутри плагина - что-то вроде этого, например, чтобы ссылаться на файл CSS из GSP:

<g:link rel="stylesheet" url="${resource(dir:'css', file:'mycss.css',
plugin:'myplugin')}"/>

Не нарушает ли эта идея концепцию плагинов, где только некоторые ее аспектыдолжен быть выставлен, а остальное это черный ящик?Альтернативные подходы к разделению статических ресурсов между смежными проектами Grails также приветствуются, на случай, если я даже попытаюсь пойти по безумному, ошибочному пути.:)

1 Ответ

3 голосов
/ 03 февраля 2011

Во-первых, в Grails плагин не считается черным ящиком.Наоборот, весь код разоблачен;если вы действительно хотите сделать его черным ящиком, то вам следует использовать другой плагин, Binary Artifacts .

Во-вторых, ваш подход очень разумный.Чтобы получить доступ к ресурсам плагина, я бы создал тег taglib:

def res = { attrs -> 
  attrs.dir=pluginContextPath
  //Do whatever you want here
  out << g.resource(attrs) 
}

и назвал бы его так же, как <g:resource>.Таким образом, вам даже не нужно раскрывать путь ресурсов вашего плагина.Плагин Nimble использует этот подход.

Также вы можете взглянуть на плагин Grails Resources , который пытается справиться с кошмаром статических зависимостей ресурсов средиGrails плагины и проекты.Я никогда не использовал его, но наверняка в своем следующем проекте Grails я включу его (кстати, он будет включен в Grails 1.4).

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