首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails如何解决Controller名称冲突?

Grails如何解决Controller名称冲突?
EN

Stack Overflow用户
提问于 2011-03-09 02:18:33
回答 1查看 1.6K关注 0票数 4

当应用程序控制器名称与插件控制器的名称发生冲突时,推荐的方法是什么?

我见过这些Grails:GRAILS-4240 GRAILS-1243

...and对这两个线程的答复意味着唯一的方法是重命名一个控制器(想必是应用程序控制器,因为黑客插件代码是不可取的)。

如何使用包名来区分grails中的类?

如何扩展/覆盖插件的控制器操作?

但是,Burt自己的spring--安全性--ui插件支持将应用程序控制器()与插件控制器( plugin )命名为的确切方法,参见spring-安全性-ui文档

实际上,这种方法在开发模式(grails )和应用程序部署为WAR时都是有效的。那么,这种功能可以依赖吗?如果是,那么控制器冲突解决规则是什么?grails文档没有提到这一点。佩哈普斯·伯特能分享他的见解吗?

有一个像grails这样的“插件”架构,甚至没有一个基本的名称空间工具来处理这样的冲突,对我来说,这似乎已经被打破了……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-09 03:55:29

问题是,虽然您可以将包用于任何工件,但控制器的约定是删除包,并使用"Controller“创建URL,例如PersonController -> /appname/person/action_name。所以实际上所有的东西都被压平了。

在1.2和1.3中,事情发生了变化,所以插件与应用程序代码分开编译(并首先编译),这使您有机会用应用程序的版本替换插件工件。由于您不应该编辑插件代码,这使您可以灵活地使用相同的名称来扩展或替换插件工件。

当有两个类似名称的控制器时,我倾向于使用UrlMappings来处理类似的事情。例如,您有一个允许低级别CRUD操作的管理UserController和一个用户使用的常规UserController。我给管理控制器命名为AdminUserController,并将其映射到/ admin /user/*,并将UserController保持原样。admin GSP将位于视图/adminUser中,而其他GSP将位于视图/用户中,因此没有冲突。这有一个额外的好处,就是能够轻松地保护- map /admin/** -> ROLE_ADMIN。这些约定很方便,但这是一个简单的配置步骤,为我解决了这个问题。

好消息是GRAILS-1243肯定将在2.0中实现,可能在1.4中实现。金·贝蒂在GRAILS-1243的评论中提到的插件看起来很有趣。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5240616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档