Grails 3.3.9: параметры прямого копирования

Мы переходим с Grails 2.x на 3.x. Я могу наблюдать другое поведение при использовании прямой функции:

class FooController {

    def index() {
        forward controller: 'foo', action : 'bar', params: params
    }

    def bar() {
        render(
                view: "/foo/foo"
        )
    }
}

При вызове http://localhost:8080/foo?test=1 и остановке в bar() метод я вижу, что params выглядит так:

params = {GrailsParameterMap@11597}  size = 4
 0 = {LinkedHashMap$Entry@11607} "test" -> 
  key = "test"
  value = {String[2]@11612} 
   0 = "1"
   1 = "1"
 1 = {LinkedHashMap$Entry@11608} "controller" -> "foo"
 2 = {LinkedHashMap$Entry@11609} "format" -> "null"
 3 = {LinkedHashMap$Entry@11610} "action" -> "bar"

Как видите, значение test сохраняется дважды как String[]. Это поведение отличается от того, что было в Grails 2.5.6. Есть ли способ установить флаг функции Grails forward, чтобы параметры не передавались контроллеру перенаправления?


person Erando    schedule 08.02.2019    source источник


Ответы (1)


Я думаю, вам не нужно добавлять param. forward автоматически пересылает ваши параметры. Это необязательно. Если вы добавите его, он будет дублировать значения. Попробуйте только:

forward controller: 'foo', action : 'bar'
person Mamun Sardar    schedule 10.02.2019
comment
Да, я тоже так подозревал. Но было бы неплохо иметь некоторую документацию об этой функции forward, чтобы узнать, поддерживает ли она какие-либо параметры параметров... но их нет. - person Erando; 11.02.2019
comment
к сожалению, нет четкого документа по этому вопросу, но вы можете увидеть последнюю реализацию или выполнить отладку локально, чтобы увидеть, что происходит: github.com/grails/grails-core/blob/master/ - person Mamun Sardar; 11.02.2019