2013-02-05 12 views
8

yivli kodunu kullanarak. Saçımı buruşturmak üzere olduğum için lütfen yardım edin. Benim GSP üst kısmında İçe ve ben bir GSP içeride gelenekselleşmiş bir işlevi kullanmak çalışıyorum GSP

benim GSP İçinde <%@ page import = company.ConstantsFile %>

var ben

<p> 
I have been in the heating and cooling business for <%(ConstantsFile.daysBetween())%> 
</p> 

var ve benim ConstantsFile.groovy

package company 

import static java.util.Calendar.* 

class ConstantsFile { 

    def daysBetween() { 
     def startDate = Calendar.instance 
     def m = [:] 
     m[YEAR] = 2004 
     m[MONTH] = "JUNE" 
     m[DATE] = 26 
     startDate.set(m) 
     def today = Calendar.instance 

     render today - startDate 
    } 
} 

Ben de koyar kiracı değişen denedi, system.out, vb ama bu benim ana sorun değil. Ben Googling denedim ..

Error 500: Internal Server Error 
URI 
/company/ 
Class 
java.lang.NullPointerException 
Message 
Cannot invoke method daysBetween() on null object 

yüzden

<p> 
    I have been in the heating and cooling business for <%(new ConstantsFile.daysBetween())%> 
    </p> 

deneyin ama sonra

Class: org.codehaus.groovy.control.MultipleCompilationErrorsException 

unable to resolve class ConstantsFile.daysBetween @ line 37, column 1. (new ConstantsFile.daysBetween())^1 error 

Biri bana yardım veya ne yapacağını gösteren bir web sitesine bana gelin Lütfen almak ve her şey ag hakkında konuşur: seç veya başka tür bir etiket ... Sadece JSP'lerde kullandığım gibi işlev sonucunu çıkarmak istiyorum.

cevap

17

Öncelikle, GSP ithalat olmalıdır:

<%@ page import="company.ConstantsFile" %> 

İkinci olarak, daysBetween statik olmalıdır (daha mantıklı) ve bir denetleyici ama şey işlemek yoktur:

class ConstantsFile { 

    static daysBetween() { 
     def startDate = Calendar.instance 
     def m = [:] 
     m[YEAR] = 2004 
     m[MONTH] = "JUNE" 
     m[DATE] = 26 
     startDate.set(m) 
     def today = Calendar.instance 

     return today - startDate 
    } 
} 
aşağıdaki şekilde

Üçüncüsü, erişim it:

<p>I have been in the heating and cooling business for ${ConstantsFile.daysBetween}</p> 

Ve son olarak, bunun için bir taglib kullanmalıdır . Ben

class MyTagLib { 

    static namespace = "my" 

    def daysBetween = { attr -> 
    out << ConstantsFile.daysBetween() 
    } 
} 

Sonra

<p>I have been in the heating and cooling business for <my:daysBetween /></p> 
+0

teşekkürler yardım için GSP kullanmak bir örnek eklemek için şimdi benim yazıyı düzenliyor ediyorum, bana önerilen ilk yolu denedik ve aşağıdaki hatayı alıyorum: hata 500: iç sunucu hatası tanım /şirket/ Sınıf groovy.lang.MissingMethodException Mesaj yöntemin bir imza() değerleri: statik company.ConstantsFile.daysBetween() değişken türleri için geçerli olan: [] Sıra Sable çözümleri: günBu ara() –

+0

Tamam. Bunu yapmak için çok üzgünüm, ama üzerinde yapmaya çalıştığım Takvim örneği ve matematik vardı. +1 ve yardım için beni kabul et –

İlgili konular