2013-02-20 53 views
2

我想写一个自定义src/templates/scaffolding/Controller.groovy并想知道是否有任何方法可以访问控制器名称?现在看起来你只能得到“模型”类。我需要它的原因是我自定义渲染以基于控制器的模板目录的前缀。Grails自定义脚手架可以访问控制器名称

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

让我知道如果您有任何问题。我正在准备研究如何自定义DefaultGrailsTemplateGenerator,但我不确定这是否是正确的路线。

例子:

class UserAdminController { 
     static scaffold = User 
} 

目前在我Controller.groovy我得到的className = '用户',所以我必须到控制器的访问权限。

回答

3

我不认为你可以,脚手架的工作方式你的模板将总是来生成一个名为DomainClassName控制器(即UserController在你的例子)类,它被装载到一个新的类加载器,然后实际控制器的元类(UserAdminController)获取新操作,并将其委托给生成的UserController的实例。

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