Grails自定义脚手架可以访问控制器名称

Grails自定义脚手架可以访问控制器名称,grails,Grails,我正在尝试编写一个自定义的src/templates/scaffolding/Controller.groovy,想知道是否有任何方法可以访问控制器名称?现在看来你只能上“模特”课了。我之所以需要它,是因为我正在自定义渲染以基于控制器为模板目录添加前缀 例如,我有一个名为AuthorAdminController的控制器,我需要自定义列表以使用/admin/user/**目录 如果你有任何问题,请告诉我。我正准备研究如何定制DefaultGrailTemplateGenerator,但我不确定这

我正在尝试编写一个自定义的
src/templates/scaffolding/Controller.groovy,想知道是否有任何方法可以访问控制器名称?现在看来你只能上“模特”课了。我之所以需要它,是因为我正在自定义渲染以基于控制器为模板目录添加前缀

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

如果你有任何问题,请告诉我。我正准备研究如何定制
DefaultGrailTemplateGenerator
,但我不确定这是否正确

例如:

class UserAdminController {
      static scaffold = User 
}

目前在我的
Controller.groovy中,我得到了className='user',因此我无法访问该控制器。

我认为您不能,因为脚手架的工作方式是,您的模板将始终生成名为DomainClassNameController的类(即您的示例中的
UserController
),它被加载到一个新的类加载器中,然后实际控制器的元类(
UserAdminController
)得到添加到其中的新操作,这些操作委托给生成的
UserController
的实例

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