在Grails中创建自定义条件TagLib

时间:2011-03-16 14:07:43

标签: grails groovy taglib

我正在尝试在grails中创建一个条件标记库以确定是否显示用户头像(我基于if http://www.grails.org/AuthTagLib上找到的ifLoggedIn标签上的代码

我的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>

当我导航到GSP时,“avatar found”正在正确显示(直接来自taglib),但“找到了个人资料!”不是。

有没有理由说明taglib中的body{}没有在GSP中显示正文?

任何可能出错的想法?​​

谢谢!

1 个答案:

答案 0 :(得分: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 {}
  }
}

有关更多示例,请参阅this page in the documentation