2013-02-05 42 views
8

में ग्रोवी कोड आयात और उपयोग करना मैं एक जीएसपी के अंदर एक ग्रोवी फ़ंक्शन का उपयोग करने की कोशिश कर रहा हूं। कृपया मदद करें क्योंकि मैं यहां अपने बालों को फाड़ने वाला हूं।जीएसपी

मेरी जीएसपी के शीर्ष पर मैं <%@ page import = company.ConstantsFile %>

मेरी जीएसपी के अंदर है मैं

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

है और मेरे 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 
    } 
} 

मैं भी पुट किराएदार को बदलने की कोशिश की है, system.out, आदि, लेकिन यह मेरी मुख्य समस्या नहीं है।

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

तो मैं

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

कोशिश लेकिन तब मैं

Class: org.codehaus.groovy.control.MultipleCompilationErrorsException 

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

कृपया कोई मेरी मदद या एक वेबसाइट से पता चलता है कि क्या करना है करने के लिए मुझसे बात समझ .. मैं googling की कोशिश की है और सब कुछ एजी के बारे में बात करता है: चयन करें या किसी अन्य प्रकार का टैग ... मैं बस जेएसपी में इस्तेमाल किए गए फ़ंक्शन के परिणाम को आउटपुट करना चाहता हूं।

उत्तर

17

पहले, अपने जीएसपी के आयात किया जाना चाहिए:

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

दूसरा, अपने daysBetween स्थिर होना चाहिए (इसे और अधिक समझ में आता है) और आप कुछ भी से प्रस्तुत करना नहीं है, लेकिन एक नियंत्रक:

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

तीसरा, निम्नलिखित तरीके से पहुँच यह:

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

और अंत में, आप इस के लिए एक taglib का उपयोग करना चाहिए । मैं अपने पोस्ट को संपादित करने कर रहा हूँ अब एक उदाहरण

class MyTagLib { 

    static namespace = "my" 

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

फिर आपकी मदद के लिए

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

धन्यवाद अपने जीएसपी में जोड़ने के लिए, मैं पहले जिस तरह तुम मुझे करने का सुझाव दिया की कोशिश की और मैं निम्नलिखित त्रुटि मिलती है: त्रुटि 500: आंतरिक सर्वर त्रुटि यूआरआई /कंपनी/ कक्षा groovy.lang.MissingMethodException संदेश विधि का कोई हस्ताक्षर:() मान: स्थिर company.ConstantsFile.daysBetween() तर्क प्रकारों के लिए लागू है [] स्थिति सिबल समाधान: दिन के बीच() –

+0

ठीक है। मुझे ऐसा करने में बहुत खेद है, लेकिन यह कैलेंडर उदाहरण था और गणित मैं इस पर करने की कोशिश कर रहा था। +1 और मेरी मदद के लिए स्वीकार करें –