Grails:如何使用资源插件添加CSS;链接“;在头上贴标签?
我有一个页面,使用了相当多的包含文件。它会动态选择要使用的正确包含文件。我希望(在include文件中)能够向grails指定我希望它在头部动态地包含一个特定的Grails:如何使用资源插件添加CSS;链接“;在头上贴标签?,css,grails,layout,plugins,resources,Css,Grails,Layout,Plugins,Resources,我有一个页面,使用了相当多的包含文件。它会动态选择要使用的正确包含文件。我希望(在include文件中)能够向grails指定我希望它在头部动态地包含一个特定的标记 像这样的东西 <html> <head> <title>My Life :: My Pets</title> <link rel="stylesheet" href="style.css" type="text/css"> <!-- Normal
标记
像这样的东西
<html>
<head>
<title>My Life :: My Pets</title>
<link rel="stylesheet" href="style.css" type="text/css"> <!-- Normal Site Style -->
<link rel="stylesheet" href="include-my-pets" type="text/css"> <!-- Dynamic Style for Include -->
</head>
<body>
<h1>My Pets</h1>
<!-- This is the include file start -->
In the GSP here I said something like:
<r:require disposition="head">
<link rel="stylesheet" href="include-my-pets" type="text/css"> <!-- Dynamic Style -->
</r:require>
to get the CSS link tag pushed into the head.
<!-- This is the include file end -->
</body>
</html>
我的生活:我的宠物
宠物
在普惠制中,我说了这样的话:
将CSS链接标签推入头部。
这对我使用
标记非常有效。我可以在任何包含文件中的任何位置指定:
<r:script disposition="head">
alert ('hello')
</r:script>
警报(“你好”)
我的布局会自动将警报hello卡在页面头部的
标记中。资源插件的优点是,您可以创建逻辑资源组(css和js),并在需要的地方使用它们。Alo不要忘记在标题
部分的末尾和正文
部分的末尾调用
。否则,资源将无法正确生成。资源插件的优点是,您可以创建逻辑资源组(css和js)并在需要的地方使用它们。Alo不要忘记在标题
部分的末尾和正文
部分的末尾调用
。否则,资源将无法正确生成。这不是“grails”的工作方式,但我就是这样实现的。我这样做的部分原因是因为我觉得在ApplicationResources.groovy中定义资源对于不熟悉资源插件的非grails开发人员来说可能并不明显。我更喜欢在include文件中有明确的资源链接,这是显而易见的
我现在做这件事的方式是这样的
Kitty和Doggy需要定制CSS和JavaScript(它们都是宠物的一部分),但其他链接,如MyLife不需要它们
在URLMappings.groovy中
"/mypets/kitty" {
controller="pets",
subpage="kitty.gsp"
action="index"
css="kitty.css",
js="kitty.js",
}
"/mypets/doggy" {
controller="pets",
subpage="doggy.gsp"
action="index"
css="doggy.css",
js="doggy.js",
}
"/mylife" {
controller="life",
action="index"
}
layout.gsp
...contains all the usual site-wide resources...
<html>
<head>
<title>${title}</title>
<link rel="stylesheet" type="text/css" href="${resource(dir: 'resources/modules/css', file: css)}"/>
<script src="${resource(dir: 'resources/modules/js', file: js)}"></script>
</head>
<body>
Select your pet: <select.../>
<!-- It's kitty.gsp and doggy.gsp (below) that need access to their own kitty and doggy js and css files -->
<g:include view="$page"/>
</body>
</html>
宠物的普惠制
...contains all the usual site-wide resources...
<html>
<head>
<title>${title}</title>
<link rel="stylesheet" type="text/css" href="${resource(dir: 'resources/modules/css', file: css)}"/>
<script src="${resource(dir: 'resources/modules/js', file: js)}"></script>
</head>
<body>
Select your pet: <select.../>
<!-- It's kitty.gsp and doggy.gsp (below) that need access to their own kitty and doggy js and css files -->
<g:include view="$page"/>
</body>
</html>
${title}
选择您的宠物:
这不是“grails”的做事方式,但我就是这样实现的。我这样做的部分原因是因为我觉得在ApplicationResources.groovy中定义资源对于不熟悉资源插件的非grails开发人员来说可能并不明显。我更喜欢在include文件中有明确的资源链接,这是显而易见的
我现在做这件事的方式是这样的
Kitty和Doggy需要定制CSS和JavaScript(它们都是宠物的一部分),但其他链接,如MyLife不需要它们
在URLMappings.groovy中
"/mypets/kitty" {
controller="pets",
subpage="kitty.gsp"
action="index"
css="kitty.css",
js="kitty.js",
}
"/mypets/doggy" {
controller="pets",
subpage="doggy.gsp"
action="index"
css="doggy.css",
js="doggy.js",
}
"/mylife" {
controller="life",
action="index"
}
layout.gsp
...contains all the usual site-wide resources...
<html>
<head>
<title>${title}</title>
<link rel="stylesheet" type="text/css" href="${resource(dir: 'resources/modules/css', file: css)}"/>
<script src="${resource(dir: 'resources/modules/js', file: js)}"></script>
</head>
<body>
Select your pet: <select.../>
<!-- It's kitty.gsp and doggy.gsp (below) that need access to their own kitty and doggy js and css files -->
<g:include view="$page"/>
</body>
</html>
宠物的普惠制
...contains all the usual site-wide resources...
<html>
<head>
<title>${title}</title>
<link rel="stylesheet" type="text/css" href="${resource(dir: 'resources/modules/css', file: css)}"/>
<script src="${resource(dir: 'resources/modules/js', file: js)}"></script>
</head>
<body>
Select your pet: <select.../>
<!-- It's kitty.gsp and doggy.gsp (below) that need access to their own kitty and doggy js and css files -->
<g:include view="$page"/>
</body>
</html>
${title}
选择您的宠物:
资源插件不支持此操作。如果查看ResourcesPlugin中的r.script实现:
def script = { attrs, body ->
def dispos = attrs.remove('disposition') ?: 'defer'
storePageFragment('script', dispos, body())
}
对“r.stylesheet”标记执行类似的操作似乎很容易,但storePageFragment和其他助手方法是私有的,因此您无法在不复制大量内容的情况下从外部执行
我建议您按照脚本标记的行实现一个样式表标记,并发送一个pull请求。这是资源插件不支持的。如果查看ResourcesPlugin中的r.script实现:
def script = { attrs, body ->
def dispos = attrs.remove('disposition') ?: 'defer'
storePageFragment('script', dispos, body())
}
对“r.stylesheet”标记执行类似的操作似乎很容易,但storePageFragment和其他助手方法是私有的,因此您无法在不复制大量内容的情况下从外部执行
我建议您按照脚本标记的行实现一个样式表标记,并发送一个pull请求。Hi Tom,谢谢您的回答。所有视图都正确呈现布局。视图使用include,从include中我试图告诉sitemesh在头部包含css资源。如何从include命令grails在头部添加标记?我可以用JavaScript代码来实现。CSS必须有一种方法。我想象的是或,但没有那样的。嗨,汤姆,谢谢你的回答。所有视图都正确呈现布局。视图使用include,从include中我试图告诉sitemesh在头部包含css资源。如何从include命令grails在头部添加标记?我可以用JavaScript代码来实现。CSS必须有一种方法。我想象了一些类似或的东西,但没有类似的东西。