【问题标题】:Wiring Controllers In Grails在 Grails 中连接控制器
【发布时间】:2015-05-25 19:13:55
【问题描述】:

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')
  }

}

<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


    【解决方案1】:

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

    在 resources.groovy 中试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 2014-09-14
      • 2016-07-13
      • 2015-02-20
      • 2014-11-28
      相关资源
      最近更新 更多