有没有办法配置控制器用来查找它的GSP文件的起始文件夹?
我有一个Grails项目(v2.0.1),我希望能够将我的控制器和视图组织成反映我的功能的包。
即。我的控制员:
uk.co.myCompany.function1.DashboardController.groovy
uk.co.myCompany.function2.DashboardController.groovy
我的观点文件夹结构:
views -> function1 -> dashboard -> index.gsp
views -> function2 -> dashboard -> index.gsp
每当我在render (view: 'index')
中拨打DashboardController
时,都会查找views/dashboard/index.gsp
。
我可以改为呼叫render (view: '../function1/dashboard/index')
,但这似乎有点不必要。另外,我显然在这些控制器中有很多其他动作/页面,并且不想在每个动作中输入它。
控制器类上用于指定默认文件夹的简单注释是理想的。有什么想法吗?
答案 0 :(得分:1)
如果您想按功能组织控制器,并且它们可以具有相同的名称,我建议您使用新的namespaces support of Grails。
您可以创建插件,而不是为每个功能设置一个包,使插件的控制器名称唯一。
生成新版本的插件以测试您的应用程序可能非常庞大,但为了避免这种情况,您可以使用grails.plugin.location将插件位置指定为依赖项。
使用该结构,我认为您可以遵循Grails约定,但同时在函数中组织代码。
UrlMappings
static mappings = {
//requests to /function1 will be handled by the
//DashboardController provided by the Function1 plugin
"/function1" {
controller = 'dashboard'
plugin = 'function1'
}
//requests to /function2 will be handled by the
//DashboardController provided by the Function2 plugin
"/function2" {
controller = 'dashboard'
plugin = 'function2'
}
}