Проблема с отображением URL в Grails: параметры неверны - PullRequest
1 голос
/ 08 августа 2011

У меня есть несколько действий контроллера, которые требуют нескольких различных методов HTTP, например, GET и POST. Вместо того, чтобы обрабатывать это в коде действия контроллера, я решил (неправильно), что он будет быстрее и менее сложным, если я помещу этот код в класс UrlMappings.groovy.

Вот что у меня есть:

class UrlMappings {

    static mappings = {

        ...

        "/$controller/(create|edit)/$id" {
            action = [
              GET: "editView",
              POST: "edit"
            ]
        }
    }
}

Таким образом, в каждом контроллере, если второй параметр URL соответствует «edit», пользователь будет перенаправлен на одно из двух действий в зависимости от метода HTTP запроса.

Все работает нормально, пока код не достигнет моего действия editView или edit, где этот код:

params.id

оценивается как edit, а не 1, как ожидается из этого примера запроса: /location/edit/1.

Это ошибка в Grails?

1 Ответ

1 голос
/ 08 августа 2011

Я не думаю, что вы можете использовать синтаксис сопоставления URL таким, какой вы есть, вам нужно разделить его на два сопоставления, например:

    "/$controller/edit/$id" {
        action = [
            GET: "editView",
            POST: "edit"
        ]
    }

и

    "/$controller/create/$id" {
        action = [
          GET: "editView",
          POST: "edit"
        ]
    }

Я понимаю, что это дублирует блок действий, но я не думаю, что есть способ обойти это, кроме как ввести другую переменную для вашего действия и решить, что делать на основе этого.

Извините, если я вас неправильно понял - это был бы комментарий, но я пока не могу его публиковать!

...