ドメインオブジェクトの予約には、オブジェクトがdbに保存された後に設定されるため、nullにすることができる複数の属性があります。 myService.actionのGrails rejectValue - ob.errorsを引き起こす複数のチェックnull
パート():
booking.properties = params
if (booking.contactFirstname?.length() <= 1) { booking.errors.rejectValue("contactFirstname", "empty") }
if (booking.contactLastname?.length() <= 1) { booking.errors.rejectValue("contactLastname", "empty") }
if (booking.contactPhone?.length() <= 1) { booking.errors.rejectValue("contactPhone", "empty") }
if (booking.contactMobile?.length() <= 1) { booking.errors.rejectValue("contactMobile", "empty") }
if (booking.contactEmail?.length() <= 1) { booking.errors.rejectValue("contactEmail", "empty") }
if (booking.hasErrors() || ! booking.validate()) {
return [success: false, model: booking]
} else {
booking.save(failOnError: true)
return [success: true, model: booking]
}
私のコントローラが行う:予約、フィールド:私は hasErrors(豆使用してい
def result = myService.action(params)
if (result.success) {
flash.success = message(code: "msg.successfullySaved")
redirect(action: "registerEventConfirmation", id: result.model.uid, params: [lang: params.lang], mapping: "paginated")
} else {
flash.error = message(code: "msg.errorSavingCheckFields")
render(view: "registerEventStep3", params: [lang: params.lang], model: [booking: result.model])
'contactFirstnameを'、「HAS-エラー ')}
エラーフィールドをマークします。
テキストフィールドに値を指定せずにフォームを送信すると、すべてのフィールドが赤色になり、booking.errorsのエラーは> 0になります。
firstnameを付けてフォームを送信すると、booking.errorsはNULLになり、他のフィールドはマークされません。
これはバグですか?私は、Grailsの2.3.6
追加情報
- と思い、私はフォームを訪れ、それは私が赤ですべてのフォームフィールドを参照してください
- 完全に空に提出し、object.errorsは(> 0エラーがありますIは、再送信VALID)
- 私は赤、object.errors = 0エラー(INVALID)
- でフォームフィールドのどれを見ないFIRSTNAME最初のフィールドに値を入力し、
- を提出なしでのフォームは、私は赤ですべての空のフォームフィールドを参照してください
- を変更し、object.errorsは> 0エラー(VALID)
私が作成したので、ドメインモデルが真のNULL可能ありオブジェクトを今すぐ保持してください。別のページに変更した後、私は特定のフィールドに検証を行いたいので、その後のフィールドを検証します。リクエスト時に余分なチェックを行うためにvalidate()でいくつかの引数を渡すことはできますか?フィールド上のあたりのよう – sullivan
はNULL可能であり、それはValまたは値を持つ場合にのみ、その値を検証しようとします。要するに、現在値を保存せずに保存することができます。それは値を取得した瞬間、それはすなわちVALおよびval.lengthがある場合のように(ヴァル&& val.lengthは()<= 2){2未満次いで訴える場合従って設定checkHasValue検証に応じて検証しようとし。それはあなたが、これは論理的に聞こえるが、 – Vahid
を行うために必要なものを行いますように聞こえる:1.作成:いくつかの値が提供されている場合、検証を有効にするべきではありませんが、オブジェクトの作成後に来る工程でオブジェクト、2。表示形式と検証。バリデーターは、値が渡されて長さに合わない場合にのみ起動します。 これはどのように作成しますか? – sullivan