【发布时间】:2017-03-07 11:09:20
【问题描述】:
我需要根据需要附加一个新的 URL 映射,并且 appender 方法需要将映射作为 Closure(而不是 UrlMapping 对象)。下面是手动声明闭包的样子:
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 - 初始化应用程序时出错: 没有方法签名:java.lang.String.call() 适用于参数类型: (java.util.LinkedHashMap) 值:[hapumTransactionAppointmentvacancyTagcandidate:/hapum/transactionappointmentvacancytagcandidate]]
可能的解决方案:wait()、any()、wait(long)、any(groovy.lang.Closure)、take(int)、each(groovy.lang.Closure)
我该如何解决这个问题?
【问题讨论】: