2011-03-16 3 views
3

Je suis en train de créer une taglib conditionnelle à Grails pour déterminer pour afficher un utilisateur ou non Avatar (je basé le code sur les Tags ifLoggedIn trouvé ici: http://www.grails.org/AuthTagLib)Création d'un TagLib conditionnel personnalisé dans Grails

Mon taglib ressemble à ceci:

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

Et dans mon GSP J'utilise le tag comme ceci:

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

Lorsque je navigue sur le SPG, "avatar trouvé" est bein g affiché correctement (directement depuis le taglib) mais "profil trouvé!" n'est pas.

Y at-il raison que le body{} dans le taglib ne montre pas les corps dans le SPG?

Des idées où ça pourrait aller mal?

Merci!

Répondre

10

mauvais type d'accolades après body, je pense qu'il devrait être:

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 {} 
    } 
} 

Voir this page in the documentation pour plus d'exemples

+0

Parfait! Il me manquait les accolades correctes et le peu << out! tout le travail est génial maintenant – rhinds

Questions connexes