2013-02-05 77 views
0

所以我試圖訪問我的GSP中的groovy函數。我有訪問GSP中的Groovy文件

<%@ page import = company.ConstantsFile %> 

再後來在GSP我

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

而且我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 

     return today - startDate 
    } 
} 

編輯:錯誤消息:

Class 
groovy.lang.MissingMethodException 
Message 
No signature of method: 

回答

0

導入是罰款,但Groovy是面向對象的語言。你需要(如在JSP/JAVA)通過對象調用方法,所以首先作出ConstantsFile類實例或定義方法daysBetween靜態這樣的:

class ConstantsFile { 
    static daysBetween() { 
     // your code goes here 
    } 
} 

現在你可以在GSP做文件

<%= ConstantsFile.daysBetween() %> 

注意等號。沒有它,從方法返回的值將不會被打印到生成的html中。

你在使用Grails嗎?如果是,那麼調用控制器級的daysBetween()方法並將結果作爲模型的一部分返回到視圖中會好得多。

提示:檢查Groovy TimeCategory(滾動到 「使用Groovy的時間範疇」)

最後一兩件事。 daysBetween()方法的邏輯似乎不是恆定的。所以將它嵌入爲ConstantFile類的一部分違反了合同。事實上,這個班裏的「檔案」也沒有太多:)