バージョン1.3からバージョン2.5にアップグレードしようとしています。 Enumのフィールドの1つを持つドメインクラスがあります。コントローラでは、domainObj.validate()を実行すると、常にfalseが返されます。検証エラーです -Grails 2.5:domainObj.properties = paramsの場合、domainObj.validate()メソッドがfalseを返します
grails.validation.ValidationErrors:1エラー フィールド 'typeEnum'のオブジェクト 'Parameter'のフィールドエラー:拒否された値[0]です。コード[com.TypeEnum.typeMismatch.error、com.TypeEnum.typeMismatch、com.TypeEnum.typeMismatch.error、com.TypeEnum.typeMismatch、typeMismatch.com.TypeEnum、typeMismatch.pspValueTypeEnum、typeMismatch.com.TypeEnum、typeMismatch];引数[typeEnum];デフォルトのメッセージ[いいえ列挙型定数com.TypeEnum.0]
EDIT:さらなる分析では、私は問題が列挙型ではないことがわかったが、parameterObj.propertiesの=のparamsを実行したときに、parameterObj.validate( )はfalseを返します。 Grailsの2.5と私のコードで
、
parameterObj.validate() //returns true
parameterObj.properties = params
// code to convert String from params to Enum object and assign it to parameterObj
parameterObj.enumField = MyEnumClass.getEnumByName(params.enumNameValue)
parameterObj.validate() //This always return false
注:検証の両方の上記の場合において()、parameterObjのフィールドの値が正確に同じである
は、プロパティを使用して任意の変更がありますGrails 2.5のドメインクラスで?
の年のためにうまく働いた、あなたが失敗したフィールドのドメインクラスのプロパティ定義を提供してくださいすることができ、 paramsのキー/値のプリントアウトも可能ですか? エラーが依然として投稿されたValidationErrorの場合、grailsは明らかに文字列値をTypeEnumに変換する必要があるため、文字列 "0"をTypeEnumフィールドに書き込もうとします。 – norganos
はい、Grailsは "0 TypeEnumに渡します。したがって、検証する前に、 "0"をenumオブジェクトに変換して、それをドメインオブジェクトに割り当てています。より具体的に上記のコードを編集しました – nshweta