我需要追加一个新的URL映射,Appender方法需要映射为Closure
(而不是UrlMapping
对象)。这里是封闭会是什么样如果手动声明:如何声明一个Closure作为函数参数
static mappings = {
name logout: "/auth/logout"{
action="signOut"
controller="auth"
}
}
因此,我宣布一个Closure
(我不知道这是否是正确的语法):
String name = "logout", url = "/auth/logout",
action = "signOut", controller = "auth"
Closure mapping = { name "${name}" : "${url}" {
action="${action}"
controller="${controller}"
}
}
而且用它来appender的方法:
Holders.grailsApplication.mainContext
.getBean("grailsUrlMappingsHolder").addMappings(mapping)
但它引发以下错误:
ERROR context.GrailsContextLoaderListener - Error initializing the application: No signature of method: java.lang.String.call() is applicable for argument types: (java.util.LinkedHashMap) values: [hapumTransactionAppointmentvacancyTagcandidate:/hapum/transactionappointmentvacancytagcandidate]]
Possible solutions: wait(), any(), wait(long), any(groovy.lang.Closure), take(int), each(groovy.lang.Closure)
我该如何解决这个问题?
现在我实现这一权利,虽然'名为“$ {NAME}”:'部分失踪。 – Gideon