2009-06-19 3 views
15

私はtaglibコールに属性パラメータがありますが、taglibが使用するタグ自体の中のものも使用しようとしています。リンクのテキストをレンダリングするために、g.link()呼び出しに渡す属性を見つけることができません。私はすでに 'ボディ'と 'リンク'と 'テキスト'と 'リンクテキスト'を試しています。GrailsはGSPの外でtaglibを使用します

私は

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") 
} 
関連する問題