收集几个Grails中自动数据绑定的容错机制,但总觉得蛮bug的。。。

[size=large]#1[/size]
[b]--action里-- [/b]
println(params.payAmount)
Expense e = new Expense(params)
println(e.payAmount)

[b]--页面输入 10o (最后一位是字母option的开头)--[/b]
奇迹发生了,sout输出结果是
10o
10
最终导致存入数据库10

也不知道这个算是自动数据绑定的BUG还是容错机制。。。感觉好危险。。。


[size=large]#2[/size]
[b]背景[/b]
it.payDate是excel插件读取excel的日期,类型为org.joda.time.LocalDate

[b]问题场景[/b]:在save前后验证
println(e.validate())
e.save()
println(e.validate())

--都是true
Expense e = new Expense()
e.payDate = new Date()

--都是true
Expense e = new Expense()
LocalDate localDate = it.payDate
e.payDate = localDate.toDate()

[color=red]--奇怪:save前是false,竟然save成功了,save后又变成true[/color]
Expense e = new Expense(it)
LocalDate localDate = it.payDate
e.payDate = localDate.toDate()

更可怕的发生了,重启以后,第一次save,还是不成功,换用前面两种方式再换回来,就能成功。。。

[color=red]终极解决办法,还是先处理在bindData
LocalDate localDate = it.payDate
it.payDate = localDate.toDate()
Expense e = new Expense(it)[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值