Ich habe meine Taglib mit dem folgenden Befehl erstellt: "Grails Create-Taglib TimeTag" Und ein Skelett-Tag wurde namens TimeTagLib erstellt.kann meine benutzerdefinierte Taglib nicht funktionieren
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)
}
}
und in der gsp-Datei habe ich diese Zeile:
<g:sortableColumn property="availW01" title="${timetaglib.weekno(offset: '0')}" />
Und ich bekomme die folgende Meldung: Nachricht
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
Ich weiß nicht genau, was zu tun ... Ich dachte, ich hätte die Dokumentation gut genug, aber anscheinend nicht befolgt. Ich habe Grails-3.2.4
=================== DIE LÖSUNG ================= =
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)))
}
}
Das APS:
<g:sortableColumn property="availW01" title="${myTag.weekNo(offset: "0")}" />
Um Ihr Tag aufzurufen, verwenden Sie: '$ {myTag.weekNo (offset: 0)}' –
Ja, Sie sind ziemlich wright, aber ich hatte auch mehr Bugs, wie Sie in dem Kommentar unten lesen können. – larand