Grails URLMappings - PullRequest
       0

Grails URLMappings

2 голосов
/ 19 октября 2010

У меня есть плагин, который основан на пользовательском отображении URL. Когда я устанавливаю плагин, мне нужно скопировать содержимое UrlMappings.groovy плагина и объединить его с приложением, в котором установлен плагин

Однако я хотел бы зарегистрировать эти отображения URL-адресов непосредственно в инфраструктуру Grails, не копируя содержимое в само приложение. Я не хочу, чтобы пользователь изменил эти отображения, поскольку они являются основой для работы плагинов.

Любой может дать мне подсказку, куда рискнуть, чтобы достичь этого.

Спасибо

1009 * Кен *

Ответы [ 3 ]

3 голосов
/ 20 октября 2010

Создайте другой файл в grails-app/config/ с именем, оканчивающимся на UrlMappings.groovy, и поместите туда настроенные сопоставления, например myUrlMappings.groovy

2 голосов
/ 20 октября 2010

Похоже, мне нужно напрямую взаимодействовать с UrlMappingsHolderFactoryBean, чтобы иметь возможность сделать это.Я надеялся, что мог бы быть более легкий способ сделать это.Код ниже взят из самого UrlMappingPlugin, единственного источника, который я нашел, чтобы помочь мне решить мою проблему.

   if (application.isUrlMappingsClass(event.source)) {
        application.addArtefact(UrlMappingsArtefactHandler.TYPE, event.source)

        BeanBuilder beans = beans {
            grailsUrlMappingsHolderBean(UrlMappingsHolderFactoryBean) {
                grailsApplication = application
            }
        }

        ApplicationContext appCtx = event.ctx
        beans.registerBeans(appCtx)

        HotSwappableTargetSource ts = appCtx.getBean("urlMappingsTargetSource")
        ts.swap appCtx.getBean("grailsUrlMappingsHolderBean")
    }
0 голосов
/ 13 июля 2015

Лично я использую Java-подход и вставляю плагин формы отображения (у меня есть только один плагин для этого).

Но обычно мой подход следующий:

1.App

class UrlMappings {
    static mappings = DimaURLMappings.getMappings()
}

2.Plugin (называемый "Dima")

class DimaURLMappings {
    static def getMappings(){
       return {
           //Mappings here
        }
    }
}

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

Я использую его таким образом, потому что у меня есть несколько приложений, которые используют мой плагин.Если у вас есть несколько плагинов с сопоставлениями, вам просто нужно объединить их, я думаю, что это не сложно.Вы также можете вернуть закрытие из плагина.Но не забудьте изменить «делегат» в приложении.

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