2011-03-16 50 views
3
創建自定義條件的TagLib

我想創建Grails的條件標籤庫,以確定是否要顯示用戶頭像(我基礎上,ifLoggedIn標籤代碼在這裏找到:http://www.grails.org/AuthTagLibGrails中

我的taglib看起來是這樣的:

def ifProfileAvatar = {attrs, body -> 
    def username = session.user.login 
    def currentUser = Account.findByLogin(username) 
    if (currentUser.profile && currentUser.profile.avatar) { 
    out << "avatar found" 
    body{} 
    } 
} 

在我GSP我使用這樣的標籤:

<g:ifProfileAvatar> 
<br/>profile found!<br/> 
</g:ifProfileAvatar> 

當我瀏覽到了普惠制,「阿凡達發現了」貝因美是g正確顯示(直接來自taglib)但「找到配置文件!」不是。

是否有任何理由說明taglib中的body{}未顯示GSP中的正文?

任何想法可能會出錯?

謝謝!

回答

10

排序錯誤括號body後,我覺得應該是:

def ifProfileAvatar = {attrs, body -> 
    def username = session.user.login 
    def currentUser = Account.findByLogin(username) 
    if (currentUser.profile && currentUser.profile.avatar) { 
    out << "avatar found" 
    out << body() // Use() not {} 
    } 
} 

更多的例子

+0

完美見this page in the documentation!我錯過了正確的括號和出來「位!現在所有的工作都很棒 – rhinds 2011-03-16 15:49:01