Bir Wicket uygulamasında, ondalık sayı metin alanım var:Bir TextField <BigDecimal>'i hem kabul edebilir hem de yapabilir misiniz? ondalık ayırıcı olarak?
TextField<BigDecimal> f =
new TextField<BigDecimal>("f", new PropertyModel<BigDecimal>(model, "share"));
Her ikisini de kabul etmek istiyorum. (nokta) ve, (virgül) ondalık ayırıcı olarak (tarayıcının yerel ayarlarının 'sine bakmadan ).
değerini gösteren değeri için, oturumun lokusu kullanılır (bizim durumumuzda "fi" (-> virgül)), fakat burada alanın giriş olarak değerini kabul ettiğiyle ilgileniyorum.
Sorum şu: TextField<String>
alanını değiştirmek ve etki alanı nesnesinin türüne (BigDecimal) manuel olarak dönüştürmek zorunda mıyım? Ya da TextField<BigDecimal>
'ü (örneğin, Wicket'in MinimumValidator veya RangeValidator'dan faydalanmasına imkan veren) kullanmanın bir yolu var mıdır ve hala ondalık ayırıcıları da kabul ediyor mu?
olarak gösterilecektir, ancak uygulama sınıfında global Dönüştürücüler kaydedebilir. Bu nedenle, BigDecimal için kendi Dönüştürme uygulamanızı kaydedebilir ve – bert
@ Robert'ın her iki çeşidini de kabul edebilirsiniz, teşekkürler! Okuma * Wicket in Action * (p 163), gerçekten de buna yaklaşmanın en iyi yolu olabilir… Bunu da bir cevap olarak yazmayı düşünün. – Jonik
Sadece bir uyarı kelimesi: Bazı lokallerde, her iki karakter aynı sayıda olabilir, yani '.', binlerce ve', 'ondalık ayırıcısı olarak kullanılır. Evrensel bir numara çözümleyici istiyorsanız, kodunuzun '32.519.100,28' gibi sayıları işleyebileceğinden emin olun. – biziclop