所以我的问题是我的域验对错误在我可以在页面上呈现之前被删除。我以为我过去已经修复了这个错误,但它又一次在我身上悄悄上去。
以下是我最初的实现。在调用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年前在论坛帖子上的某个人说有一些hibernate中的东西......可能的bug ...我不知道,但他们的建议有效。建议是将控制器包装在withTransaction
:
Trip.withTransaction {
//Controller code here
}
这对我很有用。现在的问题是我的视图中有一个taglib再次调用tripService
。在进行该调用时,它现在正在清除我的验证错误。这真的令人沮丧。有没有人知道我能做些什么来解决这个问题?
编辑:添加从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
}
答案 0 :(得分:0)
您确定首先填充trip.errors属性吗?
另外,你在taglib中调用了哪个tripService方法?