1

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

4

1 に答える 1

0

これがあなたが望む答えかどうかはわかりませんが、これがあなたが必要としているものだと思います。私はこれについて多くの調査を行ってきましたが、無効な数値を処理するときにユーザーが入力した正確なデータをデータバインディングが常に返すとは限らないようです (ヒントは決してありません)。多くの調査の結果、テキストの整数への変換を try catch でラップし、失敗した場合は null に設定することをお勧めします。次に、パラメータをビューに戻します。値が null の場合は、params から値を取得します。

于 2012-10-01T04:02:15.800 に答える