корневой контекст приложения grails - PullRequest
7 голосов
/ 19 июля 2010

У меня есть настройка приложения test grails с контекстом "/ testapp".Когда я добавляю ссылку в мой gsp, которая ссылается на / не идет в корень моего grails.app.context, но в корень моего свойства grails.serverURL.

Например, если дана ссылка с href"/css/main.css"

Я ожидаю, что эта ссылка будет выглядеть на локальном хосте: 8080 / testapp / css / main.css вместо localhost: 8080 / css / main.css

Есть ли способ, с помощью которого я могу получить ссылки на / начать с моего grails.app.context по сравнению с grails.serverURL?

Ответы [ 5 ]

21 голосов
/ 21 июля 2010

используйте значение contextPath запроса на странице

${request.contextPath}

, а затем добавьте дополнительную информацию о хосте, если необходимо, чтобы создать полный URL

6 голосов
/ 07 августа 2012

У меня была похожая проблема с OP - как сделать так, чтобы grails формировал ссылки, начинающиеся с корневого контекста, а НЕ с корневого каталога сервера?

Вы можете сделать это, используя атрибут "uri" для g: link и g: теги createLink.Например:

<g:link uri="/login">login</g:link>

будет префикс любого контекста, если это применимо, и выдаст следующий

<a href="/login">login</a>  if your app is at the http://server/ 
<a href="/testapp/login">login</a> if your app is at http://server/testapp/

Не уверен, почему это атрибут недокументированный в ссылочных документахно я нашел это в Javadocs - ApplicationTagLib

6 голосов
/ 20 июля 2010

вопрос в том, как вы добавляете свои ссылки в свой gsps?

Мы делаем такие вещи, как

<link rel="stylesheet" href="${resource(dir: 'css', file: 'stylesheet1.css')}"/>

и

<g:javascript library="prototype"/>

используя теги и методы g: javascript и resource, вы указываете grails, чтобы задать путь для вас ...

Я подозреваю, что вы просто помещаете стандартные теги в ...

Перейти

http://grails.org/doc/latest/

и, под тегами в левой навигационной панели, найдите ресурс и / или javascript, чтобы получить представление (сложно связать напрямую с документами ...: ()

1 голос
/ 22 ноября 2011

Возможно, вы должны использовать тег ресурса в своем CSS-каталоге Grails, как указано выше.Однако вы также можете использовать метод resource, чтобы найти корневой контекст вашего веб-приложения, используя тот же тег:

${resource(uri:'/')}

, а затем просто использовать эту строку где угодно.

0 голосов
/ 12 февраля 2012

И когда дело доходит до таких элементов, как таблицы стилей, я бы порекомендовал создать простой тег, который будет работать, что-то вроде этого:

class StylesTagLib {
    static namespace = "g"

    def stylesheet = { args, body ->
        out << """<link rel="stylesheet" href="${resource(dir: 'css', file: args.href)}"/>"""
    }
}

и позже в вашем коде используйте его следующим образом:

<g:stylesheet href="main.css"/>

Очевидно, что вы можете возиться с соглашениями (следует ли мне использовать предопределенную папку, следует ли автоматически добавлять расширение .css?определенный тег.

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