2013-02-20 77 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}")放入模板中,看看它給了你什麼名字(反斜槓使它在運行時而不是生成時間被解析)。