从视图或控制器向 grails 布局添加额外的 stylesheets/scripts

Adding additional stylesheets/scripts to a grails layout from a view or controller

我想使用 grails 布局为应用程序中的所有页面定义通用布局。目前它看起来像这样:

<!DOCTYPE html>
<html lang="dk">
<head>
    <meta charset="UTF-8">
    <title><g:layoutTitle default="Title"/></title>
    <asset:stylesheet src="css/default.css"/>
</head>
<body>
    <header><h1><g:layoutTitle default="Title"/></h1></header>
    <main></main>
    <footer></footer>
</body>
<asset:javascript src="jquery-3.4.1.min.js"/>
</html>

有些视图可能需要额外的样式表或脚本,而不是布局中提供的默认值,但如果我只是将它们添加到视图中,它们就不会出现:

<%@ page contentType="text/html;charset=UTF-8" %>
<!DOCTYPE html>
<html lang=\"dk\">
    <head>
        <meta name="layout" content="index" />
        <asset:stylesheet src="css/additional.css"/>
    </head>
    <body>
        <main>${content}</main>
    </body>
    <asset:javascript src="js/extra.js"/>
</html>

有没有简单干净的方法来做到这一点?

查看:http://docs.grails.org/3.1.1/ref/Tags/layoutBody.html

装饰页面示例:

<html>
   <head>
        <meta name="layout" content="myLayout" />
        <script src="myscript.js" />
   </head>
   <body>Page to be decorated</body>
</html>

装饰器布局示例:

<html>
   <head>
        <script src="global.js" />
        <g:layoutHead />
   </head>
   <body><g:layoutBody /></body>
</html>

结果:

<html>
   <head>
        <script src="global.js" />
        <script src="myscript.js" />
   </head>
   <body>Page to be decorated</body>
</html>