静的制約にアクセスするとNullPointerExceptionが発生します

StackOverflow https://stackoverflow.com/questions/214914

  •  03-07-2019
  •  | 
  •  

質問

コード

${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のみ
  例外を投げる/無視する   非静的制約。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top