GRAILS: метод для генерации постоянных ссылок / слагов?

#java #grails #groovy #internationalization

#java #grails #groovy #интернационализация

Вопрос:

Есть ли у кого-нибудь быстрый метод для генерации слагов и постоянных ссылок в Grails 1.3.7 / 2.0.0.RC1? Основное ограничение: этот метод должен работать с нелатинскими символами.

Русская / болгарская кириллица, немецкие умляуты и т.д…

Есть предложения?

Ответ №1:

Grails 2.0.0.RC1

Из документов 2.0.0.RC1:

API для генерации ссылок

Теперь доступен класс LinkGenerator общего назначения, который можно использовать в любом месте приложения Grails, а не только в контексте контроллера. Например, если вам нужно сгенерировать ссылки в службе или асинхронное фоновое задание вне области запроса:

 LinkGenerator grailsLinkGenerator

def generateLink() { grailsLinkGenerator.link(controller:"book", action:"list") }
  

Хотя это явно не указано, я предполагаю, что ссылка на grailsLinkGenerator получена с помощью внедрения зависимостей

Grails 1.3.7

Для создания ссылок можно использовать теги createLink или resource. Если вы создаете постоянные ссылки, я предполагаю, что вы хотите, чтобы они были абсолютными URL-адресами. Если это так, вам нужно будет использовать атрибут absolute или base при использовании этих тегов.

Если вы используете absolute атрибут, обязательно установите значение grails.serverURL в Config.groovy

Постоянство ссылок

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

По умолчанию схема сопоставления URL использует

  • идентификатор ресурса
  • имя контроллера
  • название действия

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

Комментарии:

1. Спасибо )) Но мой вопрос относительно ГЕНЕРАЦИИ ПОСТОЯННЫХ ССЫЛОК, ДРУЖЕСТВЕННЫХ к SEO, с нелатинских языков, таких как русский … )) Пример: mysite.com/blog/Вася/Пупкин/Должен_Быть-Латинницей … должно быть mysite.com/blog/vasya/pupkin/dolzhen-byt-latinnitsej

Ответ №2:

Так просто, как:

 title.replaceAll("[\W] ", "-")
  

Это делает его.

Комментарии:

1. Лучшее приближение к полной генерации слагов: title.trim().toLowerCase().replaceAll("[\W] ", "-")