2017-02-04 17 views
0

"grails create-taglib TimeTag"コマンドを使用してtaglibを作成しました TimeTagLibという名前のスケルトンタグが作成されました。私のカスタム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 = 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) 
    } 
} 

とGSP-ファイルで、私はこの行を追加:

<g:sortableColumn property="availW01" title="${timetaglib.weekno(offset: '0')}" /> 

そして、私は次のメッセージが出ます:私は何をすべきかわからない メッセージ

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 

を...私は十分に文書を守ったが、明らかにそうではないと思った。 私はGrailsの-3.2.4

=================== 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))) 
    } 
} 

GSP:

<g:sortableColumn property="availW01" title="${myTag.weekNo(offset: "0")}" /> 
+1

あなたのタグを呼び出すには: '$ {myTag.weekNo(offset:0)}' –

+0

はい、あなたはかなりライトですが、以下のコメントで読むことができるように、さらにバグがありました。 – larand

答えて

2

あなたのカスタムタグライブラリをコールする方法の簡単な、しかし根本的な、誤解を持っているようです。クラス名を使用する代わりに、namespaceを使用する必要がありますので、ご質問のタグライブラリは${myTag.weekNo(offset: 0)}または<myTag:weekNo offset="0" />のように呼び出されます。

+0

わかりました。私は、まったく理解していないと言います。しかし、私はそれを認識していて、myTagでもテストしましたが、私はその時とは違うエラーを認識しませんでした。 integerにパラメータをキャストせずにattrs.offsetパラメータをweekNo整数に追加できませんでした。あなたのおかげでもう一度点検しなければなりませんでした。そして、異なるエラーメッセージを認識しました。 – larand

関連する問題