静的制約にアクセスするとNullPointerExceptionが発生します
質問
コード
${personRequest.constraints.requestStatus.inList}
gspファイルで NullPointerException
がスローされますが、 new PersonRequest()。constraints ..
は機能します。どうして? 制約
は静的ではありませんか?
解決
こちら(grails-userメーリングリスト)
しかし、静的フィールドにアクセスする理由 動作しませんか?
"制約"静的フィールド クロージャープロパティです。ありません に関連するサブプロパティ 制約。
Grailsは、このクロージャを使用して評価します 監視する制約ビルダー " calls"存在しないメソッドには、 つまり、使用するプロパティ名:
type( inList: [xxxxx])
..." type"のメソッド呼び出しを引き起こしますと " inList"を含むMapパラメーター ==>いくつかの値。
この情報から、Grailsは すべての制約のリスト
利用可能であり、将来にそれらをバインド ドメインクラスのインスタンス。したがって、User.constraintsにアクセスすると 静的に、あなたは
閉鎖。値の置換を検討できました 静的制約プロパティの 実行時の評価後 それで初期化される閉鎖。 ただし、これは少し「多すぎる」可能性があります。 魔法。人々はどう思いますか?
FYI今はこんな感じです 0.4(覚えている場合)制約は静的ではなく、0.4では まだ非静的です。 0.5のみ
例外を投げる/無視する 非静的制約。
所属していません StackOverflow