2016-05-26 3 views
0

私はfloatフィールドを持つドメインクラスを持っている大きさ= 110.0の代わりに110.0Grailsの2.5.3結合しないフロートフィールドが正しく

これはGrailsのバグですか?回避策はありますか?

+0

のためにそれを行う方法をサンプルコードと答えるである私は、バインディングのGrailsでかなりの数のバグを見てきましたので、かなりのバグかもしれません。 まずロケールを確認してください。私はGrailsがユーザのロケールを使って数字を解析していると信じています。あなたのロケールでは何も意味しないかもしれません。 オプションとして、次のように自分で解析することができます: 新しいDvQuantity(大きさ:新しいBigDecimal('11 .0 ')、単位:' m ').save() – Seva

答えて

0

これはバグではありません。コメントに記載されているように、数値の解析はロケールによって異なります。 - 例PropertyEditorRegistrarValueConverterため

import java.text.NumberFormat 
String a = '11,0' 
assert NumberFormat.getInstance(Locale.US).parse(a).floatValue() == 110 
assert NumberFormat.getInstance(Locale.FRANCE).parse(a).floatValue() == 11.0 

がデフォルトの番号の形式を変更するには多くの異なる方法があります。以下の例を参照してください。バリデーターを使用してビューにフォーマットを適用することもできます。ここで

Grails databinding with decimal delimiterは、Grailsの< 2.3および> = 2.4

+0

私は2つのアプリケーションを実行していますapp1のデータを11.0として作成し、それを11.0として正しく保存し、app2からデータを取得してapp1に11.0として表示しますが、app1データベースに保存しようとすると、110.0 –

+0

と表示されますあるアプリから別のアプリにデータを送信しますか?文字列の代わりに数字を送信する場合は、数字の書式は必要なく、正しく保存されます(JSONの使用時など)。問題は、文字列を数値に解析する必要がある場合のみです。 – droggo

関連する問題