2014-11-12 3 views
1

Моего Grails структуры проекта:Grails не находя свои ресурсы

my-app/ 
    grails-app/ 
     <mostly typical grails-app structure> 
     views/ 
      web/ 
       index.gsp 
      app/ 
      admin/ 
      layouts/ 
       main.gsp 
    <rest of project structure is like any other Grails app> 

Таким образом, вы можете видеть, в то время как, как правило, индекс страница расположена в grails-app/views/index.gsp, я его на grails-app/views/web/index.gsp.

Мой application.properties:

app.grails.version=2.4.2 
app.name=my-app 
app.context=/ 
app.version=0.1 

Одна часть моего UrlMappings.groovy:

"/"(view:"/web/index") 

Мой main.gsp расположение:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title><g:layoutTitle default="MyApp"/></title> 
    <g:resource dir="css" file="myapp.css" /> 
    <g:layoutHead/> 
</head> 
<body> 
    <g:layoutBody/> 
    <g:resource dir="js" file="myapp.js" /> 
</body> 
</html> 

Мои index.gsp:

<!DOCTYPE html> 
<html> 
<head> 
    <meta name="layout" content="main"/> 
</head> 
<body> 
    <h1>Hello!</h1> 
</body> 
</html> 

Когда приложение запускается, и я просматриваю его в браузере, очевидно, что myapp.css не найден, потому что стиль страницы не соответствует действительности. При просмотре исходного кода страницы я вижу:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>MyApp</title> 

    /css/myapp.css 
    <meta name="layout" content="main"/> 
</head> 
<body> 
    <h1>Hello!</h1> 
    /js/myapp.js 
</body> 
</html> 

Так это звучит, как Grails принимает ваш app.context и использует в качестве префикса для всех ресурсов. И поскольку я не правильно что-то подключил, Grails просто переводит мои теги <g:resource> в открытый текст и распечатывает их в HTML.

Я думаю, мой вопрос: Что мне нужно для того, чтобы Grails мог найти мои ресурсы CSS/JS?

ответ

4

Я не уверен, что будет тег в теге работу правильно, так что писать так:

<link rel="stylesheet" href="${resource(dir:'css', file:'myapp.css')}" charset="utf-8"/> 
2

В соответствии с Documentation, тег ресурсов генерирует строку ссылки (URI). Может использоваться в HREF, JavaScript, Ajax вызова и т.д.

Используйте тег ресурсы внутри тегов сценария или ссылку, чтобы получить ваши CSS/JS загружены на вашей странице, как,

<link rel="stylesheet" href="<g:resource dir="css" file="myapp.css" />" charset="utf-8"/> 

Вы также можете использовать resources plugin, который я рекомендовал бы, как он решает цели и имеет хорошую documentation

+0

Плагин [Asset Pipeline] (http://grails.org/plugin/asset-pipeline) заменил ресурсы как основное решение Grails для файлов CSS и Javascript. Лично я нахожу его намного лучше, чем плагин ресурсов. –

+0

работает как answere –