收集几个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)

你可能感兴趣的:(grails)