Grails Custom Scaffolding可以访问控制器名称

时间:2013-02-20 17:20:17

标签: grails

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

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

如果您有任何疑问,请与我们联系。我正准备调查如何自定义DefaultGrailsTemplateGenerator,但我不确定这是否正确。

示例:

class UserAdminController {
      static scaffold = User 
}

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

1 个答案:

答案 0 :(得分:3)

我不认为你可以,因为脚手架的工作方式你的模板总是生成一个名为 DomainClassName 控制器的类(即UserController示例),它被加载到一个新的类加载器中,然后真实控制器的元类(UserAdminController)获得添加到其中的新动作,该动作委托给生成的UserController的实例。

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