我有标签定义:
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"
在输出中出现,但事实并非如此。
答案 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
。
id
,g:form
,g: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']