2009-06-19 61 views
15

我想要使用taglib調用,這裏有屬性參數,還有鏈接taglib使用的標籤內部的東西。我無法找到要傳遞給g.link()調用的屬性,讓它呈現鏈接的文本。我已經嘗試過「身體」和「鏈接」,「文字」和「鏈接文字」 - 沒有任何工作。Grails鏈接taglib在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 2009-06-24 15:56:55

0

爲了完整起見,因爲它不是在文檔中提到:如果您呼叫的標記(如梅託德調用)在您自己的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") 
}