したがって、私の問題は、ページにレンダリングする前に、検証エラーがドメイン オブジェクトから削除されていることです。過去にこのエラーを修正したと思っていましたが、再び忍び寄ってきました。
これが私の元の実装を見てください。tripService.stepData(trip)
が呼び出されたときにエラーがクリアされていました。
編集-ページが hasMany 関係に追加されたときにのみこの問題が発生したことはありません。
コントローラ -
Trip trip = tripService.savePrePaymentInfo(params)
if (trip.hasErrors()) {
render(view: "step4", model: tripService.stepData(trip))
}
else {
redirect(action: trip.status.action, id:trip.id)
}
サービス -
Map stepData(Trip trip)
{
Map returnSet = [:]
returnSet.status = Status.findAllByActionNotEqual("review")
returnSet.trip = trip
returnSet
}
だから私はオンラインでいくつかの読書をしました.2年前のようなフォーラムの投稿の誰かが、休止状態に何かがあると言っていました..バグの可能性があります...わかりませんが、彼らの提案はうまくいきました。提案は、コントローラーをwithTransaction
次のようにラップすることでした。
Trip.withTransaction {
//Controller code here
}
これは私にとってはうまくいきました。tripService
今の問題は、ビューに再度呼び出す taglib があることです。その呼び出しが行われると、検証エラーがクリアされます。これは本当にイライラしています。これを解決するために私ができることについて誰か考えがありますか?
編集:taglibから呼び出されるサービスメソッドの追加:
String findBannerName(Long pidm, String format = 'LFMI')
{
"abc"
//It really doesnt matter what is here - tried just returning this string and it produced the issue
}