Grails映射

Grails映射,grails,Grails,我有一个依赖于自定义url映射的插件。安装插件时,我需要复制插件的UrlMappings.groovy的内容,并将其与安装插件的应用程序中的内容合并 但是,我希望直接将这些url映射注册到grails框架中,而不将内容复制到应用程序本身。我不希望用户更改这些映射,因为它们是插件工作方式的核心 任何人都可以给我一些提示,告诉我在哪里可以冒险实现这一目标 多谢各位 -ken在grails app/config/中创建另一个文件,名称以UrlMappings.groovy结尾,并将自定义映射放在其中,

我有一个依赖于自定义url映射的插件。安装插件时,我需要复制插件的UrlMappings.groovy的内容,并将其与安装插件的应用程序中的内容合并

但是,我希望直接将这些url映射注册到grails框架中,而不将内容复制到应用程序本身。我不希望用户更改这些映射,因为它们是插件工作方式的核心

任何人都可以给我一些提示,告诉我在哪里可以冒险实现这一目标

多谢各位


-ken

grails app/config/
中创建另一个文件,名称以
UrlMappings.groovy
结尾,并将自定义映射放在其中,例如
myUrlMappings.groovy
似乎我需要直接与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")
    }

就我个人而言,我使用Java方法并从插件中注入映射(我只有一个插件)

但总体而言,我的方法如下:

1.应用程序

2.插件(称为“Dima”)

是的,我需要手动添加它,但另一方面,很明显应用程序从哪里获得映射,这并没有什么神奇之处


我这样使用它是因为我很少有应用程序使用我的插件。如果你有一些带有映射的插件,你只需要合并它们,我认为这并不难。您还可以从插件返回闭包。但别忘了在应用程序中更改“委托”。

这不是我想要的。应用程序中根本不需要这样做,我的问题是在运行插件时通知grails框架这种映射。应用程序不需要知道这些。@ken您所说的框架“就是”应用程序。。。除非在应用程序中指定URL映射,否则应用程序将无法解析该URL映射。Aaron,谢谢,但这是给定的伙伴。我已经用我需要的一切定义了UrlMappings.groovy,但我不想在我使用的应用程序中公开它。如果我只将URLMappings.groovy放在插件中,grails不会识别它。
class UrlMappings {
    static mappings = DimaURLMappings.getMappings()
}
class DimaURLMappings {
    static def getMappings(){
       return {
           //Mappings here
        }
    }
}