當應用程序控制器名稱與插件控制器的名稱衝突時,推薦的方法是什麼?Grails如何解決控制器名稱衝突?
我看到這些的Grails JIRAs: GRAILS-4240 GRAILS-1243
...和伯特·貝克威思的答覆這兩個線程意味着,唯一的辦法就是因爲黑客重命名其中一個控制器(大概應用控制器插件代碼是不期望的)
How to use the package name to differentiate between classes in grails?
How to extend/override controller actions of plugins?
然而,伯特自己的春季安全的UI插件主張命名的應用程序控制器一樣插件控制器的精確方法 - 看spring-security-ui docs。
這種做法實際上似乎在開發模式下工作(Grails的運行的應用程序),當應用程序被部署爲WAR。那麼這個功能可以依靠嗎?如果是這樣,控制器衝突解決規則是什麼? Grails文檔沒有提及它。 Perhasps Burt可以分享他的見解嗎?
擁有一個像Grails的一個「插件」的架構,甚至沒有基本的命名空間設施,以處理這樣看起來很破我的衝突......
謝謝伯特!我不確定我完全理解編譯順序如何發揮作用。由於我的FooController和插件的FooController位於不同的包中,因此它們都不會覆蓋其他的.class文件。兩個FooController.class文件都在WAR中。如此看來,Grails的有喜歡的應用程序,以插件的... – Eric 2011-03-09 13:12:01
右一些查找邏輯,他們編譯成不同的文件夾,所以沒有.class文件衝突。在啓動時,找到工件的進程首先找到插件的工件,但是然後應用程序的工件替換它,因爲它具有相同的「工件」名稱。 – 2011-03-09 15:44:11