在grails中我试图将数据绑定到命令对象,但是我遇到了一个奇怪的问题,其中字符串后缀会自动(静默地)从数字中删除。例如:
class MyCommand {
int myInt
}
def test = {
def cmd = new MyCommand()
def myMap = [myInt:"123asdf"]
bindData(cmd, myMap)
boolean errors = cmd.hasErrors()
render errors
}
这将呈现false,myInt将设置为123。 但是,如果我尝试将myInt设置为“asdf123”,cmd.hasErrors()将返回true。
为什么会这样?是否有不同的方法将数据绑定到将处理此问题的对象。 在这篇文章中讨论了同样的问题,但没有提供任何解决方案:http://grails.1312388.n4.nabble.com/Data-binding-with-numbers-is-this-expected-td2073860.html
答案 0 :(得分:0)
我不确定这是你想要的答案,但是,我认为这就是你所需要的。我已经对此做了很多研究,在我看来,数据绑定并不总是(提示永远不会)返回用户在处理无效数字时输入的确切数据。经过大量研究,我给你的建议是将文本转换为带有try catch的整数,如果失败,则将其设置为null。然后将参数传递回视图。如果值为null,则从params获取值。