J'ai créé mon taglib en utilisant la commande: "grails create-taglib TimeTag" Et une étiquette squelette a été créée appelée TimeTagLib.ne peut pas faire fonctionner mon taglib personnalisé
package com.buffer
class TimeTagLib {
static final namespace = 'myTag'
static defaultEncodeAs = [taglib:'html']
//static encodeAsForTags = [tagName: [taglib:'html'], otherTagName: [taglib:'none']]
def weekNo = {attrs, body ->
date = new Date()
def calendar = date.toCalendar()
def week = calendar.get(calendar.WEEK_OF_YEAR)
out << body() << calendar.format('yy') + String.format("%02d", week+attrs.offset)
}
}
et dans le gsp fichier j'ai ajouté cette ligne:
<g:sortableColumn property="availW01" title="${timetaglib.weekno(offset: '0')}" />
Je reçois le message suivant: message
Request processing failed; nested exception is org.grails.gsp.GroovyPagesException: Error evaluating expression [timetaglib.weekno(offset: '0')] on line [38]: Cannot invoke method weekno() on null object
Caused by
Cannot invoke method weekno() on null object
Je ne sais pas quoi faire ... Je pensais avoir bien suivi la documentation mais apparemment pas. J'ai-Grails 3.2.4
=================== LA SOLUTION ================= =
TagLib:
package com.buffer
class TimeTagLib {
static final namespace = 'myTag'
static defaultEncodeAs = [taglib:'html']
//static encodeAsForTags = [tagName: [taglib:'html'], otherTagName: [taglib:'none']]
def weekNo = {attrs, body ->
Date date = new Date()
def calendar = date.toCalendar()
def week = calendar.get(calendar.WEEK_OF_YEAR)
out << String.format("V%02d", (week+(attrs.offset as Integer)))
}
}
Le GSP:
<g:sortableColumn property="availW01" title="${myTag.weekNo(offset: "0")}" />
Pour appeler votre tag, utilisez: '$ {myTag.weekNo (offset: 0)}' –
Oui, vous êtes tout à fait wright mais j'ai aussi eu plus de bugs que vous pouvez lire dans le commentaire ci-dessous. – larand