My 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资源?
我不确定标签中的标签是否可以正常工作,所以这样写:
<link rel="stylesheet" href="${resource(dir:'css', file:'myapp.css')}" charset="utf-8"/>
根据文档,资源标签生成一个链接 (URI) 字符串。可以在href,JavaScript,Ajax调用等中使用。
使用脚本中的资源标签或链接标签将 css/js 加载到您的页面中,例如,
<link rel="stylesheet" href="<g:resource dir="css" file="myapp.css" />" charset="utf-8"/>
您也可以使用资源插件,我建议您使用它,因为它解决了目的并具有良好的文档