2015-07-16 11 views
5

Oynatma Çerçevesini Kullanma.İstemci tarafında uzun bir değerin yuvarlanması nasıl önlenir?

Kontrolör

@BodyParser.Of(BodyParser.Json.class) 
public static Result getResponseJson(Long id){ 
    List<DataField> entities = new Model.Finder<>(Long.class, DataField.class) 
     .where("response_id = " + id).findList(); 
    Response response = new Response(entities, id); 
    return ok(toJson(response)); 
} 

Response varlıktır:

public class Response { 
    private Long uuid; 
    private Map<TableField, String> map = new HashMap<>(); 
    ...constructors, getters and setters... 
} 

Ben postacı ile tepkisini kontrol edin. sekmesi "Ham" Açık aldım: "Pretty" sekmesinde

{"uuid":3942015886343226874,"map":{"Work":"Contract","locale":"Mogilev"}} 

:

{ 
    "uuid": 3942015886343227000, 
    "map": { 
    "Work": "Contract", 
    "locale": "Mogilev" 
    } 
} 

Neden uuid yuvarlanır var mı?

+0

js Max sayısı +/- 9007199254740992'dir. JS, bir sayı için yalnızca 16 anlamlı basamak sağlar. – barbarian

+0

Gördüğüm tek çözüm, uuid'i java'da bir String olarak kullanmaktır, bu yüzden bir dize gibi görüntülenecek ve çalışacak, böylece değer değiştirilmeyecektir. Ama neyse, diğer fonksiyonlarda JS bunu bir numara gibi konumlandırabilir, böylece yuvarlaklaştıracaktır ... – barbarian

cevap

2

Bu Playframework ile ilgili değil, bir tarayıcı sorunudur. tarayıcınızda geliştirici konsolunu açın ve bu deneyin - çünkü JavaScript sayı limitinin 3942015886343227000

-

var c = 3942015886343226874; 
console.log(c); 

Bu yazdırılır.

UUID durumunda String kullanmak daha iyi.