0

そのため、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: 
4

1 に答える 1

0

インポートは問題ありませんが、Groovy はオブジェクト指向言語です。(JSP/JAVA のように) オブジェクトを介してメソッドを呼び出す必要があるため、最初に ConstantsFile クラスのインスタンスを作成するか、メソッド daysBetween を次のように static として定義します。

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

GSPファイルでできるようになりました

<%= ConstantsFile.daysBetween() %>

等号に注意してください。これがないと、メソッドから返された値が結果の html に「出力」されません。

Grailsを使用していますか?はいの場合は、コントローラー レベルで daysBetween() メソッドを呼び出し、結果をモデルの一部としてビューに返す方がはるかに優れています。

ヒント: Groovy TimeCategoryを確認します(「Groovy の時間カテゴリの使用」までスクロールします)。

最後に一つだけ。daysBetween() メソッドのロジックは一定ではないようです。そのため、ConstantFile クラスの一部として埋め込むと、契約に違反します。実際のところ、このクラスには「ファイル」についてもあまりありません:)

于 2013-02-05T11:53:36.180 に答える