2012-05-02 24 views
12

JSF 2 ve RichFaces 3 kullanıyorum. Aşağıda gösterilen resimde, veritabanında bulundukları sayılar gösteriliyor.Jsf'de 2 nokta ondalık biçiminde bir sayı görüntüleme

enter image description here

Ama kesir kısmı orada ve 5095138.00 ise hiçbir kesir kısmı varsa 6749395.20 olarak görüntülemek istiyorum.

Şu andan itibaren böyle bir şey denedim.

<rich:column> 
    <f:facet name="header"> 
     <h:outputText value="Total Amount"/> 
    </f:facet> 
    <h:outputText value="#{rr[2]}"> 
     <f:convertNumber type="number" groupingUsed="true" minFractionDigits="2" pattern="#0.00"/> 
    </h:outputText> 
</rich:column> 

Aslında birlikte hepsini gösteriyorum ama type, groupingUsed, minFractionDigits ve pattern ile tüm olası kombinasyonları olarak hepsiyle çalıştık.

Neden çalışmıyor? Bu nasıl oldu ve nasıl çözebilirim?

+0

Dönüştürücünüz beklendiği gibi çalışmalıdır. MinFractionDigits = "2" 'yeterli olmalıdır. DataTable dışında aynı şeyi denediniz mi? –

+0

ya da ben datatable dışında denedim ama asıl sorun datatype ve @BalusC sayesinde, O bana yardımcı oldu. – Addicted

cevap

32

Bu değer Number değilse, örneğin String örneğinde olabilir. O zaman temelde temsil ettiği veriler için yanlış tip kullanıyorsunuz. Java'daki para birimlerini temsil etmek için BigDecimal kullanıyor olmalısınız. Ayrıca, veritabanı tablosundaki türün doğru olduğundan emin olun, yani bir varchar değil, ondalık olmalıdır.

Veri türünü düzelttikten sonra, <f:convertNumber> yapmasını söylediğiniz gibi çalışacaktır. pattern özniteliğinin groupingUsed ve minFractionDigits'u geçersiz kılacağını unutmayın. Diğerlerini patternveya kullanmalısınız. Ayrıca, type="number" zaten varsayılan, bu yüzden kaldırılabilir.

Yani, onlar farklı biçimleri ürettiğini

<f:convertNumber pattern="#0.00" /> 

veya

<f:convertNumber groupingUsed="true" minFractionDigits="2" /> 

Not kullanmak ya. Muhtemelen gruplandırmayı false olarak ayarlamak istersiniz.

Ayrıca type="currency" kullanabilirsiniz, o zaman otomatik olarak UIViewRoot#getLocale() göre doğru desen geçerli olacaktır:

<f:convertNumber type="currency" /> 

da tag library documentation ve DecimalFormat javadoc bakınız.

+0

aslında benim veritabanımda onlar sayılardı ve onları string olarak getiriyordum ve sonra onları bir modelle numara olarak göstermeye çalışıyordum. Şimdi onu bir arraylist olarak değiştirdim. ve şimdi doğru ve istenen formatı görüntülüyor. Teşekkürler Buddy Çok teşekkürler ................ – Addicted

+0

Ve isim para birimi ile, Dolar sembolü ($) sembolünü gösterebileceği gibi rupi ile birlikte INR sembolünü görüntüleyebileceğim herhangi bir yöntem var mı. – Addicted

+0

Hayır, teşekkürler, bende ..... – Addicted