Jeder der das Plugin burningimage in seinem Grails Projekt benutzt um Bilder/Grafiken in Datenbanken oder im Dateisystem abzulegen wird irgendwann feststellen, dass es in den Views nicht möglich ist, zu prüfen, ob die Domain-Klasse „kein“ Bild hält um dementsprechend bei fehlendem Bild besonderen Inhalt einzublenden. Vor diesem Problem stand ich und habe dementsprechend mit freundlicher Hilfe vom burningimage-Entwickler (burningice) eine spezielle TagLib entwickelt, die mir das Tag bereit stellt.
Funktioniert nicht:
<g:if test="${domainInstance.imageField == null}>Content</g:if>
Lösung:
Man erstellt eine neue TagLib mit
create taglib
und nennt sie am besten „ExtendedBurningImageTagLib“.
Danach kopiert man einfach den folgenden Quelltext in die TagLib
package Packagename class ExtendedBurningImageTagLib { static namespace = 'bi' def hasNoImage = { attrs, body -> if (bi.hasImage(attrs, body)){ return } out << body() } }
und hat nach einem Neustart der Software in seinen Views das Tag
<bi:hasNoImage bean="${domainInstance}">Content to display when domainInstance has no images.</bi:hasNoImage>
zur Verfügung.