2009-06-19 1 views
15

Я пытаюсь использовать тег taglib, там есть параметры атрибута, а также материал внутри самого тега, который использует тег taglib. Я не могу найти атрибут для перехода к вызову g.link(), чтобы он отображал текст ссылки. Я уже пробовал «тело» и «ссылку» и «текст» и «linkText» - ни одна из них не работает.Grails link taglib use за пределами GSP

Я ожидаю, чтобы быть в состоянии назвать

g.link(action:"foo", controller:"bar", _____:"text of the link here")

, но не знаю, что положить в _____

ответ

4

Там нет параметра для передачи в (лучше или хуже).

Чтобы получить текст по ссылке, вы передаете ее как закрытие.

g.link(action:"foo", controller:"bar") { "text of the link here" }
25

Обычно вы делаете это так:

g.link(action:"foo", controller:"bar", "text of the link here") 

Текст ссылки не должен быть последним параметром, он может появиться в любом месте:

g.link("text of the link here", action:"foo", controller:"bar") 

.

Использования с закрытием:

Вместо строки вы можете использовать замыкание, которое возвращает строку:

g.link(action:"foo", controller:"bar", {"text of the link here"}) 

И, как и с любым заводным закрытием, который является последним параметром для вызова метода, вы можете поместить его после закрытия скобки:

g.link(action:"foo", controller:"bar") {"text of the link here"} 
+1

Документы не ссылаются на это вообще, но показывают закрытие. Документы, вероятно, нуждаются в обновлении. – user111544

+1

Я обновил ответ, чтобы объяснить это. – Zim

0

Для полноты картины, так как он не упоминается в документации: если вы звоните тег (как Metod вызовы) внутри собственного taglib вы можете использовать закрытие для вывода любого другого содержимого (используя out <<) внутри внешнего тега. Например:

out << g.form(method: "post", controller: "login") { 
    out << "Name: " << g.textField(name: "name") << "<br>" 
    out << "Password: " << g.passwordField(name: "password") << "<br>" 
    out << g.submitButton(name: "login") 
}