是否可以使用它们作为子文件夹的包来配置grails来解析控制器和操作?
例如,假设我有以下目录结构:
/grails-app/controllers/HomeController.groovy (with action index)
/grails-app/controllers/security/UserController.groovy (with actions index, edit)
/grails-app/controllers/security/RoleController.groovy (with action index, edit)
我希望grails自动生成以下url映射:
http://localhost:8080/myApp/ => HomeController.index
http://localhost:8080/myApp/security/user/ => UserController.index
http://localhost:8080/myApp/security/user/edit => UserController.edit
http://localhost:8080/myApp/security/role/ => RoleController.index
http://localhost:8080/myApp/security/role/edit => RoleController.edit
答案 0 :(得分:3)
我会对将直接映射到您的包名称有点谨慎。这样做会使你将来很难重构,特别是一旦你的应用程序出现在外面。这也违背了Grails的传统特性。
但是,您仍然可以手动构建网址以映射到不同的路径。对于你的问题,这是一个例子:
// grails-app/conf/UrlMappings.groovy
'/security/user/$action?/$id?' (controller: 'user')
'/security/role/$action?/$id?' (controller: 'role')
// the rest of the default UrlMappings are below
'/$controller/$action?/$id?' {}
由于控制器通常通过名称引用,例如在你的情况下,“用户”,违反这一惯例并不容易;它试图与框架作斗争,而不是让它为你工作。
可能可能基于包执行此操作(可能使用Reflection,或其他什么?),但不建议。
答案 1 :(得分:1)
我相信您正在寻找Grails URLMapping约束。看这里:Grails - URL mapping