Создание пользовательского условного тега в Grails - PullRequest
3 голосов
/ 16 марта 2011

Я пытаюсь создать условную библиотеку тегов в Grails, чтобы определить, отображать ли аватар пользователя или нет (я основал код на тегах ifLoggedIn, найденных здесь: http://www.grails.org/AuthTagLib)

Мой 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, "аватар найден" отображается правильно (прямо из taglib), но "профиль найден!" нет.

Есть ли причина, по которой body{} в taglib не показывает тело в GSP?

Есть идеи, где это может пойти не так?

Спасибо!

1 Ответ

10 голосов
/ 16 марта 2011

Неправильная сортировка скобок после 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 {}
  }
}

См. эту страницу в документации для дополнительных примеров

...