在tagLib中使用方法调用语法时,如何将id传递给链接?

时间:2017-05-03 07:46:07

标签: grails taglib

我有标签定义:

def myCustomLink =  { attrs, body ->
    def url = complexUrl(attrs.whatever)
    def linkAttrs = [url: url, class:'css-class', id: 'actual-id']
    out << g.link(linkAttrs, body() ?: "Book a service")
}

我希望HTML元素中的id="actual-id"在输出中出现,但事实并非如此。

2 个答案:

答案 0 :(得分:1)

答案是(对于有此问题的其他人):

// Use the elementId attribute to pass an id for the anchor tag itself.
def linkAttrs = [url: url, class:'css-class', elementId: 'actual-id']

在ApplicationTagLib https://searchcode.com/codesearch/view/72308377/

的源代码中找到

这是因为id属性(以及所有其他属性)在链接href本身中使用。

答案 1 :(得分:1)

id和{}之间的初学者(有时)相当混乱。 elementId Taglib中使用的g:link

idg:formg:link等各种Taglib中的g:textField属性不适用于任何HTML代码的id属性,而是是引用域类的标识或id字段。因此,如果您在任何这些标记库中使用id,那么它将用于/$controller/$action/$id网址映射(默认映射)。

最终,要生成带有<a>属性的id代码,您需要使用elementId代替(正如您已经回答的那样)。

http://docs.grails.org/3.2.9/ref/Tags/link.html

  

elementId(可选) - 此值将用于填充生成的href的id属性

Map linkAttrs = [url: url, class: 'css-class', elementId: 'actual-id']