gpt4 book ai didi

grails - 动态 Grails 网址映射配置

转载 作者:行者123 更新时间:2023-12-04 01:50:10 24 4
gpt4 key购买 nike

如何动态构建映射列表 - 而不是:

class UrlMappings {
static mappings = {
"/helpdesk/user/$action?/$id?" (controller="helpdeskuser")
"/helpdesk/group/$action?/$id?" (controller="helpdeskgroup")
"/helpdesk/company/$action?/$id?" (controller="helpdeskcompany")
"/helpdesk/account/$action?/$id?" (controller="helpdeskaccount")
"/admin/company/$action?/$id?" (controller="admincompany")
"/admin/account/$action?/$id?" (controller="adminaccount")
}
}

像这样的伪代码:
class UrlMappings {
static mappings = {
application.controllerClasses.each {
if(it.name.startsWith('helpdesk'))
"/helpdesk/${it.name}/$action?/$id?" (controller="${it.name}")
if(it.name.startsWith('admin'))
"/admin/${it.name}/$action?/$id?" (controller="${it.name}")
}
}
}

(我不明白静态映射是什么——哈希映射?自由变量?)

我想要实现的是基于 Controller 类型的映射 - 例如帮助台、管理员或用户 Controller 。设置映射后,我想根据 URL 添加安全性,但我不想单独映射每个 Controller :
grails.plugins.springsecurity.interceptUrlMap = [
'/helpdesk/**': ['ROLE_HELPDESK','ROLE_ADMIN'],
]

最佳答案

我刚刚在我的应用程序中完成了以下操作:

import org.codehaus.groovy.grails.commons.ApplicationHolder

class UrlMappings {
static mappings = {
for( controllerClass in ApplicationHolder.application.controllerClasses) {
// Admin Controllers first
if( controllerClass.name.startsWith("Admin")){
// note... fixes the case so that AdminUserController maps to /admin/user
"/admin/${controllerClass.name[5].toLowerCase() + controllerClass.name[6..-1]}/$action?/$id?" {
controller = "admin${controllerClass.name[5..-1]}".toString()
}
}
}
}
}

我以前实际上没有这样做过,你的问题促使我修复这是我的应用程序。这是我一段时间以来一直在尝试做的事情之一。

关于grails - 动态 Grails 网址映射配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com