How to nest plugin URLs?

☆樱花仙子☆ 提交于 2019-12-11 09:36:30

问题


I would like to create a "Shell" of a Grails project that hosts functionality in plugins, with the URLs segregated by plugin name.

So the URLs for a Blog plugin used in the Shell project might look like: /shell/blog/viewBlogPost

But what I'm actually seeing is all of the plugins' controllers behave as if they are part of the shell project itself: /shell/viewBlogPost

Is there any way to declare that the Blog plugin's controllers be accessible only under a /blog path in the URL?


回答1:


It seems like Grails plugins are not able to do this. The problem is that they lack encapsulation and composability, leading to artifact conflicts:

  • URL routing from plugins is simply merged together and cannot be nested
  • Controllers are not namespaced
  • Services are not namespaced

I opened an issue: GRAILS-9300

The Grails team has tentative plans to address this in 2.2, by using the plugin name as a namespace for artifacts.




回答2:


Yes, your plugins can register URL mappings just like the rest of your "shell" application can.




回答3:


You can declare UrlMappings in a plugin by creating a file with a name ending in UrlMappings in your plugin (e.g. BlogPluginUrlMappings.groovy) and these will get merged into the main application's UrlMappings. You can setup mappings starting with /blog/ to route to your plugin's controllers.



来源:https://stackoverflow.com/questions/11657392/how-to-nest-plugin-urls

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!