Grails中的接线控制器

时间:2015-05-25 07:33:52

标签: grails grails-2.0

TLDR

如何在resources.groovy中连接控制器?

故事

我有两个控制器ProviderAControllerProviderBController 谁都实现了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')
  }

}

OR

<g:form action="${g.createLink(controller: 'providerController',
    action: 'actionX')">
  ...
</g:form>

为了使这项工作,我想我应该添加一个参考 providerController中的resources.groovy bean并将其连接到。{ 具体实施,例如ProviderAController

// resources.groovy
beans = {

  providerController(ProviderAController)

}

// UrlMappings.groovy
...
'/foo/bar/x'(controller: 'providerController', action: 'actionX')
...

但是,正如您可能已经猜到的那样,此设置无法按预期工作。 我怀疑我错过了一些微不足道的东西或者误解了整体 概念首先。我很感激任何帮助/提示。

最初发布在Grails dev mailing list,但是现在我再想一想,似乎我应该在Grails用户列表上发布这个: - )

1 个答案:

答案 0 :(得分:0)

我没有试过这个,但我看到这个post也适用于控制器。

在resources.groovy中试试这个:

beans = {
    springConfig.addAlias 'providerController', 'providerAController'
}