Grails g: link - включить имя приложения в результирующий атрибут привязки href - PullRequest
3 голосов
/ 21 февраля 2011

Этот GSP:

<g:link controller="book" action="show" id="5">Example</g:link>

приводит к следующему HTML:

<a href="/book/show/5">Example</a>

Это относительно хоста HTTP.Если ваш сайт работает на http://localhost:8080, это нормально.

Во время разработки приложение будет чаще работать на http://localhost:8080/appName.

В таких случаях приведенная выше ссылка не будетработа - это приведет к тому, что абсолютный URL-адрес будет http://localhost:8080/book/show/5 вместо обязательного http://localhost:8080/appName/book/show/5

Какие изменения требуются в приведенном выше GSP, чтобы имя приложения присутствовало в результирующей привязке якоря?

Ответы [ 5 ]

3 голосов
/ 22 февраля 2011

Параметр конфигурации grails.app.context должен соответствовать контексту, в котором вы хотите развернуть приложение.Если он не установлен, как в конфигурации по умолчанию, по умолчанию используется имя вашего приложения, например http://localhost:8080/appName.Если вы хотите развернуть свое приложение в корневом контексте (например, http://locahost:8080/), добавьте это к своему Config.groovy:

grails.app.context = "/"

Если контекст установлен правильно, URL-адреса, сгенерированные тегами g:linkбудет включать контекст перед именем контроллера.

2 голосов
/ 13 декабря 2013

Я обнаружил, что тег meta очень полезен для получения информации в файлах GSP.

Например, если вам нужно имя вашего приложения, вы можете получить его так:

<g:meta name="app.name"/>

Вы можете получить любое свойство в вашем application.properties файле, например.

И если вам, как и мне, нужно объединить его с другим значением, вот мой пример.Помните, что любой тег можно использовать как метод без пространства имен g:.Например:

<g:set var="help" value="http://localhost:8080/${meta(name:"app.name")}/help" />

Документация Grails об этом немного скудна, но здесь .

1 голос
/ 22 февраля 2011

Для меня единственная лучшая причина использовать <g:link> заключается в том, что он добавляет контекст, если он есть, или опускает его, если вы используете http://localhost:8080 или в prod на http://mycoolsite.com- тривиально просто соединить части вместе, в противном случае.

То же самое касается использования g:resource с css, javascript и т. д. - это позволяет вам иметь один GSP, который работает независимо от контекста (например,'appName'), поскольку он разрешается во время выполнения.

0 голосов
/ 21 апреля 2014

тег createLink автоматически включает ваш параметр appname / context в ссылку.

Вот ссылка документ для него.

0 голосов
/ 22 февраля 2011

Я думаю, для этого и нужен grails.serverURL. Вы определили эту переменную конфигурации в Config.groovy, проверьте документацию конфигурации для Grails для получения более подробной информации.

Надеюсь, это поможет!

...