2010-11-01 15 views
7

Milletler,EXTJS Sorunu Boş Değerlerle Kaydet - useNull: bir etkisi yok - Yardımcı?

JSONStore tarafından desteklenen bir combobox bileşenim var. Mağazaya yüklenen veriler, açılan kutunun değeri için boş döndürülüyor. Değer bir int. JSON kod çözme işlemi boş değer sıfırdır; combobox'ın, yedekleme deposunda bulunmayan sıfır olan pk'yi bulmaya çalışırken ortaya çıkmasına neden olma.

Veriler için useNull: config seçeneğini buldum.Field nesneleri, 3.3.0 Final sürümüne yükseltildi ve combobox için int değerimi useNull olarak ayarla: true. Maalesef bu hiç bir etkide bulunmuyor. Kod çözülen değer hala sıfırdan sıfıra değiştirilmektedir.

Bir JSON alanı verisi sıfır olduğunda alanı nasıl sıfırlamayacağınız hakkında bir fikir yok mu?

İşte neler olduğuna dair bir resim. Verilere dikkat edin: değer sıfırdır, ancak JSON değeri boştur.

Teşekkürler!

(!. Gah stoopid itibar < 10 yüzden doğrudan pic post edemez buradan bakın: debug pic):

fields: [ 
     {name:"id", type:"int"}, 
     {name:"occurenceDate", dateFormat: 'Y-m-d\\TH:i:s', type:"date"}, 
     {name:"docketNumber", type:"string"}, 
     {name:"courtLocationId", type:"int", useNull:true}, 
     {name:"assignedOfficerId", type:"int", useNull:true}, 
     {name:"primaryIncidentTypeId", type:"int", useNull:true}, 
     {name:"secondaryIncidentTypeId", type:"int", useNull:true}, 
     {name:"tertiaryIncidentTypeId", type:"int", useNull:true}, 
     {name:"incidentLocation", type:"string"}, 
     {name:"summary", type:"string"}, 
     {name:"personalItemsSeized", type:"string"}, 
     "supplements", 
     "parties", 
     "judgeIds" 
    ] 
+0

sunucu. JSONObjectMapper'ı null alanlarını istemciye döndürmemesi için yapılandırdım (Jackson w/Spring kullanarak): setSerializationConfig(). SetSerializationInclusion (JsonSerialize.Inclusion.NON_NULL); şimdi boş alanlar dönmüyor, ancak açılan kutu hala doğru şekilde işlenemiyor. Hala araştırma .... –

cevap

3

bırakmadan kullanmayı deneyin Ayrıca

, burada Mağazamın alan yapılandırma var tip beyanı.

{ 
    name: "primaryIncidentTypeId", 
    convert: function(value, row) { 
     return (value == null) ? null : parseInt(value); 
    } 
} 
+0

Bahşiş için teşekkürler. Yukarıdakileri başarıyla ekledim (yalnızca fark: Ext.isEmpty (value) - değer boş bir dize ve! ​​= Null). Bu, null değerinin bir sıfıra dönüştürülmesini sağlayan JSON sorununu çözdü, ancak açılan kutularmın küçülmekte olduğu sorunu çözmedi. Bir combobox için width: config değerini açıkça ayarlamanız gerektiğini keşfettim, aksi takdirde taraklar küçülecektir. –

+0

Bir başka not: Bu süreçte iki meseleye rastladım.Birincisi dönüştürücüdür: Alanlarda tanımladığım işlev: mağazanın param hiçbir zaman çağrılmadı. Bunun nedeni, depoyu dolduran sunucudaki sütun meta verilerini döndürdüğüm; İstemci tarafında javascript yapılandırmasında kodlanmış olanı üzerine yazdım. –

+0

İkinci konu Extjs 3.3.0 ile yapıldı. son sürümde, bir alanın null olduğu bir formdaki bir UpdateFile() için bir BasicForm sorarken bir hata olduğunu düşündüğüm bir şey var. Sorun, BasicForm'un updateRecord() 'ının bağırsaklarındadır: getValue() öğesini çağıran alanları boyunca yineleme yapar, ancak value.group'ları çağırır - ya da bunun gibi bir şey. Değer boşsa, bu bir nesne değildir ve ... KABOOM. Bu konuda bir fikrin var mı? 3.3'e yükseltmeyi çok isterim, bu yüzden useNull: özelliğini dönüştürücüler yerine kullanabilirim. –

0

açılan genişliği hakkında:: Ayrıca dönüştürme yöntemini kullanabilir Genellikle formu bildiriminde

defaults: { 
    anchor: '100%' 
} 

kullanabilir ve genişlikleri ile sorunumuz yok.

Sunucudan diğer tüm meta verilerle birlikte dönüştürme işlevleri sağlamaz mı?

Ve hala ExtJS 3.2 kullanıyorum - Bu aynı zamanda beni üretim sistemlerinin :)

+0

Evet, meta verileri dönüştürme işlevlerini sunucu tarafındaki sağladığınız için özür dilerim. Herhangi bir java fasulyesine dayalı extjs deposu meta verilerini üretmek için bazı sunucu tarafı kodları kullanıyoruz. İşlemimiz henüz oluşturulmuş kodda dönüştürücüler eklemek için yeterince karmaşık değil. –

+0

ipucu için teşekkürler re 'çapa: '% 100'' kullandım, ama formumun çekici olması için çok geniş. Boyutu yönetmek için formun içine sütun koymak gibi bir şey bulmak zorunda kalacağım. kendimi de-tembel-i-fy kadar, ben genişliği ile sopa olacak:. :-) –

0

herhangi bir yeni hataların gerek, fazladan izin Ext.data.Types tip dönüştürme fonksiyonu geçersiz kılabilirsiniz tamsayı türü alanları için boş değerler. integet türü için varsayılan değer olduğundan

Ext.data.Types.INT.convert = function(v){ 
    v = parseInt(String(v).replace(Ext.data.Types.stripRe, ''), 10); 
    return isNaN(v) ? null : v; 
}; 
-1

Sen defaultValue: null ,useNull : true kullanmalıdır sıfır

Örnek: Şimdi ComboBox'ın işleme sorunları nedeniyle un-Haritalanabilir değerler gelen vardır emin değilim

{name:"primaryIncidentTypeId", type:"int", useNull:true , defaultValue: null },