2012-09-27 73 views
1

在grails中,我嘗試將數據綁定到命令對象,但是我遇到了一個奇怪的問題,其中字符串後綴會自動(無聲)從數字中剝離。例如:數據綁定Grails中的奇怪

class MyCommand { 
    int myInt 
} 
def test = { 
    def cmd = new MyCommand() 
    def myMap = [myInt:"123asdf"] 
    bindData(cmd, myMap) 
    boolean errors = cmd.hasErrors() 
    render errors 
} 

,這會使得虛假的,如果我嘗試設置敏爲「asdf123」 cmd.hasErrors()將返回true敏將被設置爲123 不過。

爲什麼會發生這種情況?有沒有一種不同的方式將數據綁定到一個對象來處理這個問題。 同樣的問題在這篇文章中討論但不提供任何解決方案:http://grails.1312388.n4.nabble.com/Data-binding-with-numbers-is-this-expected-td2073860.html

+0

執行cmd.properties = myMap的結果相同。但是,cmd.properties ['myInt'] = myMap會拋出一個GroovyCastException,並顯示以下消息:「無法將類'java.lang.String'的對象'123asdf'轉換爲類'int'」 – kazvictor

+0

此bug已報告給grails,在這裏跟蹤http://jira.grails.org/browse/GRAILS-6766 –

回答

0

我不確定這是你想要的答案,但是,我認爲這是你所需要的。我在這方面做了大量的研究,在我看來,數據綁定並不總是(暗示永不)從用戶在處理無效數字時輸入的確切數據返回表單。經過大量研究,我的建議是將文本轉換爲帶有try catch的整數,如果失敗,則將其設置爲null。然後將參數傳遞迴視圖。如果該值爲null,則從參數中獲取值。