Grails Hibernate Session或Spring Transaction破坏域验证错误

时间:2013-05-22 17:36:09

标签: spring hibernate validation grails grails-services

所以我的问题是我的域验对错误在我可以在页面上呈现之前被删除。我以为我过去已经修复了这个错误,但它又一次在我身上悄悄上去。

以下是我最初的实现。在调用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        
}

1 个答案:

答案 0 :(得分:0)

您确定首先填充trip.errors属性吗?

另外,你在taglib中调用了哪个tripService方法?