我已经在这样的grails中配置了一些restful资源
"/book/$id?"(resource:"book")
"/author/$id?"(resource:"author")
但是我希望这更通用,比如
"/$controller/$id?"(resource: controller)
哪个不起作用......(获得404)
如何为grails中的restful资源配置通用URL映射?
答案 0 :(得分:2)
看起来映射的“资源”部分是在启动时评估的,而不是在执行实际请求时进行评估(猜测来自于此)。因此,我认为您需要根据应用程序启动时可用的Domain类动态“预加载”您想要的UrlMappings集。这样的事情可能会起到作用:
class UrlMappings {
static mappings = {
ApplicationHolder.application.getArtefacts('Domain').each { GrailsClass cl ->
"/${cl.propertyName}/$id?"(resource: cl.propertyName )
} ...
答案 1 :(得分:0)
正确的需求映射完全取决于您要实现的目标(无法从问题中确定)。
考虑通用映射:
"/$controller/$action?/$id?"{}
这会将URL的第一部分映射到同名的控制器,第二部分映射到该控制器的操作,第三部分映射到应该是域类实例的唯一标识符。
使用此映射的示例:
/book/show/2 Controller: bookController Action: show id: 2 This will call the show action of the book controller. params.id will be 2. The intention implied in the URL is to show relevant details for a book object with an id of 2. /question/update/6 Controller: questionController Action: update id: 6 This will call the update action of the question controller. params.id will be 6. The intention implied in the URL is to update the details for a question object with an id of 6.