Как мне поручить Grails всегда создавать URL: s, заканчивающиеся косой чертой (/)? - PullRequest
1 голос
/ 07 января 2011

Рассмотрим следующее сопоставление URL Grails:

class UrlMappings {
  static mappings = {
    "/something/${foo_id}/" {
    controller = "foo"
    action = "bar"
  }
}

При генерации URL: с использованием g:link ..

<g:link controller="foo" action="bar" params="[foo_id: 123]">foobar</g:link>

.. результирующая ссылка выглядит как ..

<a href="/something/123">foobar</a>

Обратите внимание, что завершающий слеш в отображении URL удален.

Однако оба URL: s /something/123 и /something/123/ по-прежнему работают.

Из-за требований приложения, которое я создаю, я должен сделать так, чтобы версия URL «кончалась косой чертой» была основной. В идеале я хотел бы, чтобы URL, не заканчивающийся косой чертой, возвращал 404 (во избежание проблем с каноническими страницами).

Каков наилучший и наиболее общий способ заставить Grails создавать URL: s, где конечные слэши не удаляются, как описано выше?

Один из способов решить эту проблему - создать все URL-адреса вручную, но я не хочу идти по этому пути.

Ответы [ 2 ]

5 голосов
/ 07 января 2011

К сожалению, механизм отображения URL Grails не такой сложный. Поэтому, хотя прямое сопоставление URL-адресов будет работать хорошо (то есть от URL-адреса до контроллера), обратный процесс должен быть выполнен вручную, чтобы достичь описанного результата.

Вероятно, наилучшим подходом было бы создание собственного тега для вывода нужных ссылок.

1 голос
/ 10 января 2011

Если вы ищете способ создания тега groovy, в котором всегда добавляется косая черта (/), добавляется конец URL, лучше всего создать пользовательский тег tagLib, который создает ссылки, например, g: linkdo.

Но я не знаю, останавливается ли это по ссылке без косой черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...