URL-адрес Grails с использованием идентификатора и имени - PullRequest
4 голосов
/ 03 марта 2011

Привет всем, у меня есть вопрос по поводу urlmapping в Grails. Я пытаюсь сделать SEO дружественных URL, используя имя страницы и идентификатор. Я получил следующее в моем URLMapping:

class UrlMappings {

static mappings = {
    "/$id/$name"{
        controller = "page"
        action = "view"
    }
    "500"(view:'/error')
    "/"(controller:"index")
  }
}

Ведьма работает, но .... идентификатор не будет очищен на панели URL, поэтому при первом нажатии на ссылку все идет хорошо: http://localhost:8080/SuurdGasControl/2/Gasmetingen

Но на следующей странице показано: http://localhost:8080/SuurdGasControl/2/6/Ontgassen

обратите внимание, что идентификатор "2" не был удален ...

Любая помощь или мысли?

ОБНОВЛЕНИЕ

URLMapping теперь выглядит так:

class UrlMappings {

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

    name stfu: "/id/$id/$name" {
        controller = 'page'
        action = 'view'
    }

    "500"(view:'/error')
    "/"(controller:"index")

  }
}

Создать ссылку так же просто, как:

<g:link mapping="stfu" params="[id: pageId, name: pageName]">${oNavigationInstance.toString()}</g:link>

1 Ответ

3 голосов
/ 03 марта 2011

Попробуйте использовать сопоставление именованных URL, как описано в http://docs.grails.org/latest/guide/theWebLayer.html#namedMappings

...