Grails:如何使用资源插件添加CSS;链接“;在头上贴标签?

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

我有一个页面,使用了相当多的包含文件。它会动态选择要使用的正确包含文件。我希望(在include文件中)能够向grails指定我希望它在头部动态地包含一个特定的
标记

像这样的东西

<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必须有一种方法。我想象了一些类似或的东西,但没有类似的东西。