Grails 无法使我的自定义标记库工作

Grails 无法使我的自定义标记库工作,grails,gsp,taglib,Grails,Gsp,Taglib,我使用命令“grails create taglib TimeTag”创建了我的taglib 创建了一个名为TimeTagLib的骨架标记 package com.buffer class TimeTagLib { static final namespace = 'myTag' static defaultEncodeAs = [taglib:'html'] //static encodeAsForTags = [tagName: [taglib:'html'], o

我使用命令“grails create taglib TimeTag”创建了我的taglib 创建了一个名为TimeTagLib的骨架标记

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)
    }
}
我只是不知道该怎么办。。。我认为我对文档的理解足够好,但显然不行。 我有grails-3.2.4

============================解决方案==================

标记库:

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)))
    }
}
package com.buffer
类TimeTagLib{
静态最终命名空间='myTag'
静态defaultEncodeAs=[taglib:'html']
//静态encodeAsForTags=[标记名:[taglib:'html'],其他标记名:[taglib:'none']]
def weekNo={attrs,body->
日期=新日期()
def calendar=date.toCalendar()
def week=calendar.get(calendar.week/u年)

对于如何调用自定义标记库,您似乎有一个简单但基本的误解。您需要使用
名称空间
,而不是使用类名,因此您的标记库(在您的问题中)将被这样调用:
${myTag.weekNo(偏移量:0)}

您似乎对如何调用自定义标记库有一个简单但基本的误解。您需要使用
名称空间
,而不是使用类名,因此您的标记库(在您的问题中)将被这样调用:
${myTag.weekNo(偏移量:0)}

调用标记使用:
${myTag.weekNo(偏移量:0)}
是的,你很聪明,但我也有更多的错误,你可以在下面的评论中看到。调用标记使用:
${myTag.weekNo(偏移量:0)}
是的,你很聪明,但正如你在下面的评论中看到的那样,我也有更多的bug。好吧,我想说-一点也不理解。但我知道这一点,也使用myTag进行了测试,但没有意识到我当时遇到了不同的错误。我无法在不首先强制转换pa的情况下将参数attrs.offset添加到整数weekNo中参数到整数。多亏了你,我不得不再次检查,然后我识别出不同的错误消息。好的,我会说-一点也不理解-。但我知道这一点,也用myTag进行了测试,但没有意识到我当时遇到了不同的错误。如果没有第一个castin,我无法将参数attrs.offset添加到整数weekNo中将参数改为整数。多亏了你,我不得不再次检查,然后我识别出了不同的错误消息。
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
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)))
    }
}
<g:sortableColumn property="availW01" title="${myTag.weekNo(offset: "0")}" />