2

我正在尝试编写自定义src/templates/scaffolding/Controller.groovy,想知道是否有任何方法可以访问控制器名称?现在看来您只能获得“模型”类。我需要它的原因是我正在自定义渲染以根据控制器为模板目录添加前缀。

例如,我有一个名为的控制器AuthorAdminController,我需要自定义list以使用该/admin/user/**目录。

如果您有任何问题,请告诉我。我正准备研究如何定制DefaultGrailsTemplateGenerator,但我不确定这是否是正确的路线。

例子:

class UserAdminController {
      static scaffold = User 
}

目前在我的Controller.groovy我得到 className='user' 所以我无法访问控制器。

4

1 回答 1

3

我不认为你可以,因为脚手架的工作方式你的模板总是会生成一个名为DomainClassName Controller 的类(即UserController在你的例子中),它被加载到一个新的类加载器中,然后真正的控制器的元类(UserAdminController)变得新添加到它的操作委托给生成的UserController.

现在每个控制器都可以在执行操作期间访问该controllerName属性,因此这可能会为您提供一种解决方法。我还没有尝试过,但是您可以尝试将 alog.info("controller: \${controllerName}")放入模板中并查看它为您提供的名称(反斜杠使其在运行时而不是生成时解析)。

于 2013-02-20T17:48:58.550 回答