【发布时间】:2015-05-25 19:13:55
【问题描述】:
TLDR
如何在resources.groovy 中连接控制器?
故事
我有两个控制器 ProviderAController 和 ProviderBController
他们都实现了ProviderControllerContract 接口。
interface ProviderControllerContract {
abstract def actionX()
abstract def actionY()
}
class ProviderAController implements ProviderControllerContract {
@Override
def actionX() { ... }
@Override
def actionY() { ... }
}
class ProviderBController implements ProviderControllerContract {
@Override
def actionX() { ... }
@Override
def actionY() { ... }
}
根据外部决策,我的 Grails 应用程序应该 一次只使用一个控制器(例如重定向到他们的 其他控制器或视图中的操作)。
SomeController {
def someAction() {
// ...
redirect(controller: 'providerController', action: 'actionX')
}
}
或
<g:form action="${g.createLink(controller: 'providerController',
action: 'actionX')">
...
</g:form>
为了完成这项工作,我想我应该添加对此的引用
providerController bean in resources.groovy 并将其连接到
具体实现,例如ProviderAController:
// resources.groovy
beans = {
providerController(ProviderAController)
}
// UrlMappings.groovy
...
'/foo/bar/x'(controller: 'providerController', action: 'actionX')
...
但是,您可能已经猜到,此设置未按预期工作。 我怀疑我遗漏了一些琐碎的事情或误解了整体 首先是概念。如有任何帮助/提示,我将不胜感激。
最初发布在Grails dev mailing list,但现在我再想一想,似乎我应该把它发布在 Grails 用户列表上:-)
【问题讨论】:
标签: grails grails-2.0