Grails自定义标签库输出多行

时间:2015-01-28 11:45:07

标签: taglib

我正在创建一个自定义标记库,我必须使用标记库将html内容输出到视图。我们可以输出像

这样的内容
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 -->'
}

现在的问题是,如果我尝试在一个out中输入多行,那么它会抛出错误 -

def globalCSS = { attrs, body ->
    out << 'Bla bla bla
    Super bla bla
    Awesome bla bla'
}

错误 -

Multiple markers at this line
- implements groovy.lang.Script.run
- Groovy:expecting ''', found '\r' @ line 10, 

那么无论如何要将多行发布在一起吗?因为我很容易复制粘贴我需要输出的HTML代码所以请建议一种方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

请参阅http://groovy.codehaus.org/Strings+and+GString了解Multiline Strings部分。使用'''"""来解决groovy中的多行字符串。

  

如果您有一个想要使用的文本块,但不想对其进行全部编码(例如,如果它是一块HTML或其他内容),那么您可以使用"""语法

 def text = """\
 hello there ${name}
 how are you today?
 """

第一行中的尾随\表示应该忽略那里的换行符(为了便于阅读)