Grails 4.1 - Stati c Отображение URL-адресов не работает должным образом после обновления - PullRequest
0 голосов
/ 07 января 2020

Я сейчас обновляюсь до Grails 4.1. В прошлой версии у меня было сопоставление stati c в моих сопоставлениях URL. groovy следующим образом:

  class UrlMappings {

      static mappings = {
          name tool: "tool/$controller/$action?/$id?"{
             "/$controller/$action?/$id?"{
                constraints {
                    // apply constraints here
                }
             }
         }

      "/"(controller: "auth", action: "login")
      "500"(view:'/error')
      "404"(view:'/notFound')
     }
  }

Это отлично работало в предыдущих версиях Grails и когда я нажимал на ссылку, чтобы перенаправить на url localhost:8000/tool/converters/list, конвертер будет распознан как контроллер, список будет распознан как действие, и будет отображен правильный вид. Теперь, когда я обновился, когда я нажимаю на ссылку, URL-адрес, на который он перенаправляется, равен localhost:8080/tool%2Fconverters/list, а сообщение об ошибке «Эта страница не работает» - это то, что отображается в представлении. «% 2F» каким-то образом вставляется в URL и приводит к тому, что страница не отображается.

Я просмотрел документацию Grails 4 и не вижу никаких признаков того, что формат сопоставлений stati c в сопоставлениях URL изменился. Кто-нибудь знает, почему это происходит и как я могу это исправить?

1 Ответ

1 голос
/ 08 января 2020

См. Проект на https://github.com/jeffbrown/rookycodermapping.

https://github.com/jeffbrown/rookycodermapping/blob/0b7ff27a7fc8c1c1f7b4cf3dc14430ca1cac7be5/grails-app/controllers/rookycodermapping/SchemaController.groovy

package rookycodermapping

class SchemaController {

    def show() {
        render 'This is being rendered by the show action in SchemaController.'
    }
}

https://github.com/jeffbrown/rookycodermapping/blob/0b7ff27a7fc8c1c1f7b4cf3dc14430ca1cac7be5/grails-app/controllers/rookycodermapping/UrlMappings.groovy

package rookycodermapping

class UrlMappings {

    static mappings = {
        name tool: "/tool/$controller/$action?/$id?" {}

        "/"(view:"/index")
        "500"(view:'/error')
        "404"(view:'/notFound')
    }
}

https://github.com/jeffbrown/rookycodermapping/blob/0b7ff27a7fc8c1c1f7b4cf3dc14430ca1cac7be5/grails-app/views/index.gsp#L56 -L59

        <p>
            Click <g:link action="show" controller="schema">here</g:link> to invoke the show action (g:link action="show" controller="schema").
            Click <g:link uri="/tool/schema/show">here</g:link> to invoke the show action (g:link uri="/tool/schema/show").
        </p>

Обе эти ссылки работают должным образом.

...