Grails自定义标记库无法在主布局中使用

时间:2015-01-28 11:28:29

标签: grails layout taglib

我制作了一个自定义标记库,用于导入所有GSP页面上所需的所有JS和CSS文件。现在的问题是,如果我尝试在Main.gsp布局上使用TagLib,那么标记库就不起作用了。但是,如果我在普通页面上做同样的事情,那么它的效果非常好。

我甚至使用println检查控制台是否正在计算标记库但没有打印任何内容。相反,如果我在页面上使用相同的tagLib,那么这个println会在控制台上打印出来,证明它可以在那里工作。

有没有办法让它在Main.gsp布局上运行?

taglib的代码是 -

def globalCSS = { attrs, body ->
    out << '<!-- BEGIN GLOBAL MANDATORY STYLES -->'
    out << '<link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&subset=all" rel="stylesheet" type="text/css">'
    out << '<link rel="stylesheet" type="text/css" href="'+g.resource(dir: 'assets/global/plugins/font-awesome/css', file: 'font-awesome.min.css', absolute: true)+'"/>'
    out << '<link rel="stylesheet" type="text/css" href="'+g.resource(dir: 'assets/global/plugins/simple-line-icons', file: 'simple-line-icons.min.css', absolute: true)+'"/>'
    out << '<link rel="stylesheet" type="text/css" href="'+g.resource(dir: 'assets/global/plugins/bootstrap/css', file: 'bootstrap.min.css', absolute: true)+'"/>'
    out << '<link rel="stylesheet" type="text/css" href="'+g.resource(dir: 'assets/global/plugins/uniform/css', file: 'uniform.default.css', absolute: true)+'"/>'
    out << '<!-- END GLOBAL MANDATORY STYLES -->'

    println("Hello css");
}

main.gsp的代码是 -

<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"><!--<![endif]-->
    <head>
        <myUI:globalCSS/>
        <g:layoutHead/>
    </head>
    <body>
        <g:layoutBody/>
    </body>
</html>

1 个答案:

答案 0 :(得分:-1)

看起来你正在重新发明资源/资产管道插件已经提供的功能。除非你有充分的理由不这样做,否则我建议你改用其中一个,最好是资产管道。