Grails taglib 只打印一个 class 名称

Grails taglib only printing one class name

我有一个自定义标签库,我正在向它传递一些属性。我希望它输出一个包含我传入的属性的输入字段。

def selectField = { attrs ->
    System.out.println( attrs.class );
    out << "<input id=" + attrs.id + " class=" + attrs.class + " name=" + attrs.name + " />"
}

当我打印出来时 class 我明白了 "span2 myinput"

调用gsp文件中的元素

<mynamespace:selectField class="span8 myinput" name="pay" id="myid"  data-user="${blaaaa}"/>

当我检查由 selectField 方法呈现的输入元素时,我得到了这个

<input id="myid" class="span8" myinput="" name="pay">

似乎无法让它接受具有多个名称的 class。它似乎只为 class 接受一个字符串,然后将另一个单独打印为另一个属性

应该是

<input id="myid" class="span8 myinput" name="pay">

您仍在使用字符串连接,输出中没有引号。

标签应该是这样的:

 def selectField = { attrs ->
    out << '<input id="' << attrs.id << '" class="' << attrs.class << '" name="' << attrs.name << '" />'
}

您可能想查看 org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib 源代码以了解标签的实现方式