gpt4 book ai didi

grails - 保存 Action 的奇怪行为

转载 作者:行者123 更新时间:2023-12-02 14:41:04 25 4
gpt4 key购买 nike

我在保存域时有一个奇怪的行为,这是域:

class Ads {
String adTitle
String adDetails
String duration
Date dateCreated

static belongsTo = [user:Users]

static constraints = {
category (nullable:false)
adTitle (nullable:false, maxSize:100 )
adDetails(nullable:false, maxSize:500 )
duration (inList:["7 days", "14 days", "30 days"],nullable:true)
}

static mapping ={ duration (sqlType:"datetime") }
}

这是 Controller 中的 保存操作:
    @Transactional
def save(Ads adsInstance) {
if (adsInstance == null) {
notFound()
return
}

if (adsInstance.hasErrors()) {
respond adsInstance.errors, view:'create'
return
}
adsInstance.user=Users.get(springSecurityService.currentUserId)

def adCreationDate = new Date()

switch (adsInstance.duration) {//here i'm just modifying the duration
case "7 days":
adsInstance.duration=adCreationDate+7

break
case "14 days":
adsInstance.duration=adCreationDate+14

break
case "30 days":
adsInstance.duration=adCreationDate+30

break
default:
adsInstance.duration=adCreationDate+7

}
adsInstance.save flush:true
if (adsInstance.isAttached()) //here the return is always not saved
{
println "Saved"
}
else
{
println " not Saved"
}
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: [
message(code: 'ads.label', default: 'Ads'),
adsInstance.id
])
// redirect adsInstance
redirect action:'show' ,id:adsInstance.id
}
'*' { respond adsInstance, [status: CREATED] }
}
}

adsInstance.isAttached()中,我总是得到 尽管 adsInstance.save flush:true 被调用过,但未保存,我是否缺少某些东西?

最佳答案

您缺少两件事:

  • 修改工期字段后,您无需再次验证对象。
  • 如果您使用save方法添加了failOnError: true,则您将自己确定问题。

  • 您在 duration字段上添加了一个约束,该约束只能包含 ["7 days", "14 days", "30 days"]值。但是在switch块内部,您为它分配了不会通过验证的日期类型值。其次,根据验证, duration字段的sql类型不应为 datetime。您应该创建一个自定义验证器或使用一个过渡字段。

    关于grails - 保存 Action 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34623619/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com