1

興味深い問題:

次のようなドメインクラスがあります

class Dummy {
    String key = (''+new Date()).encodeAsSHA256()
}

アプリを起動しようとすると、長いスタック トレース/エラー メッセージが表示されます。

Invocation of init method failed; nested exception is org.hibernate.InstantiationException: could not instantiate test objectmad.Dummy
...
Caused by MissingMethodException: No signature of method: java.lang.String.encodeAsSHA256() is applicable for argument types: () values: []

ここで、を削除し.encodeAsSHA256()、アプリケーションを開発モードで起動してエンコードを再挿入すると、動作します:-)

したがって、基本的にコードは実行時に機能しますが、初期化時に、String クラスはまだエンコーダーに対して準備ができていないようです。

カスタムコンストラクターを作成せずにこれを修正する方法はありますか?

4

2 に答える 2

3

found a solution: the encoder can also be invoked directly, but you have to know the right package...

import org.codehaus.groovy.grails.plugins.codecs.SHA256Codec

class Dummy {
    String key = SHA256Codec.encode(''+new Date())
}

...solves the problem...

于 2012-10-03T19:14:31.870 に答える
0

なぜコンストラクタではないのですか?これはコンストラクタに属します...

于 2012-10-03T19:04:21.780 に答える