收集几个Grails中自动数据绑定的容错机制,但总觉得蛮bug的。。。
#1
--action里--
println(params.payAmount)
Expense e = new Expense(params)
println(e.payAmount)
--页面输入 10o (最后一位是字母option的开头)--
奇迹发生了,sout输出结果是
10o
10
最终导致存入数据库10
也不知道这个算是自动数据绑定的BUG还是容错机制。。。感觉好危险。。。
#2
背景
it.payDate是excel插件读取excel的日期,类型为org.joda.time.LocalDate
问题场景:在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()
--奇怪:save前是false,竟然save成功了,save后又变成true
Expense e = new Expense(it)
LocalDate localDate = it.payDate
e.payDate = localDate.toDate()
更可怕的发生了,重启以后,第一次save,还是不成功,换用前面两种方式再换回来,就能成功。。。
终极解决办法,还是先处理在bindData
LocalDate localDate = it.payDate
it.payDate = localDate.toDate()
Expense e = new Expense(it)