当应用程序控制器名称与插件控制器的名称发生冲突时,推荐的方法是什么?
我见过这些Grails:GRAILS-4240 GRAILS-1243
...and对这两个线程的答复意味着唯一的方法是重命名一个控制器(想必是应用程序控制器,因为黑客插件代码是不可取的)。
但是,Burt自己的spring--安全性--ui插件支持将应用程序控制器()与插件控制器( plugin )命名为的确切方法,参见spring-安全性-ui文档。
实际上,这种方法在开发模式(grails )和应用程序部署为WAR时都是有效的。那么,这种功能可以依赖吗?如果是,那么控制器冲突解决规则是什么?grails文档没有提到这一点。佩哈普斯·伯特能分享他的见解吗?
有一个像grails这样的“插件”架构,甚至没有一个基本的名称空间工具来处理这样的冲突,对我来说,这似乎已经被打破了……
发布于 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的评论中提到的插件看起来很有趣。
https://stackoverflow.com/questions/5240616
复制相似问题