2012-05-02 45 views
12

Tôi đang sử dụng JSF 2 và RichFaces 3. Ở đây trong hình minh họa bên dưới, các số được hiển thị như những gì chúng có trong cơ sở dữ liệu.Hiển thị số ở định dạng thập phân 2 điểm trong jsf

enter image description here

Nhưng tôi muốn hiển thị chúng như 6749395.20 nếu phần phần là ở đó và 5095138.00 nếu không có phần nào phần là ở đó.

Hiện tại tôi đã thử một cái gì đó như thế này.

<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> 

Thật sự tôi đang hiển thị tất cả trong số họ với nhau, nhưng tôi đã cố gắng với tất cả trong số họ là tất cả các kết hợp có thể có type, groupingUsed, minFractionDigitspattern.

Tại sao nó không hoạt động? Làm thế nào là điều này gây ra và làm thế nào tôi có thể giải quyết nó?

+0

Trình chuyển đổi của bạn sẽ hoạt động như mong đợi. 'MinFractionDigits =" 2 "' là đủ. Bạn đã thử cùng một bên ngoài dataTable? –

+0

ya người đàn ông tôi đã thử nó bên ngoài datatable cũng có, nhưng vấn đề chính là datatype và nhờ @BalusC, Ông đã giúp tôi ra ngoài. – Addicted

Trả lời

32

Điều đó có thể xảy ra nếu giá trị không phải là Number ở tất cả, ví dụ: String. Về cơ bản, bạn đang sử dụng sai loại dữ liệu mà nó đại diện. Để đại diện cho tiền tệ trong Java, bạn nên sử dụng BigDecimal. Ngoài ra, hãy đảm bảo rằng loại trong bảng cơ sở dữ liệu là đúng, tức là loại không phải là một varchar, nhưng là một số thập phân.

Khi bạn đã sửa loại dữ liệu, thì <f:convertNumber> sẽ hoạt động như bạn đã yêu cầu. Lưu ý rằng thuộc tính pattern sẽ ghi đè số groupingUsedminFractionDigits. Bạn nên sử dụng các số patternhoặc các thiết bị khác. Ngoài ra, type="number" đã là mặc định, do đó, nó có thể bị xóa.

Vì vậy, hoặc là sử dụng

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

hoặc

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

Lưu ý rằng chúng tạo ra các định dạng khác nhau. Bạn có thể muốn đặt nhóm thành false.

Bạn cũng có thể sử dụng type="currency", nó sẽ tự động áp dụng các mô hình đúng theo UIViewRoot#getLocale():

<f:convertNumber type="currency" /> 

Xem thêm tag library documentationDecimalFormat javadoc.

+0

thực sự trong cơ sở dữ liệu của tôi, chúng là số và tôi đã tìm nạp chúng trong chuỗi và sau đó đã cố gắng hiển thị chúng dưới dạng số với một số mẫu. Bây giờ tôi đã thay đổi nó thành một danh sách. và bây giờ nó đang hiển thị định dạng đúng và mong muốn. Cảm ơn Buddy Cảm ơn rất nhiều ................ – Addicted

+0

Và với tên tiền tệ, có phương pháp nào tôi có thể hiển thị biểu tượng INR cùng với đồng rupee như I CAN hiển thị biểu tượng Dollar ($) hay không. – Addicted

+0

Không, cảm ơn tôi đã hiểu điều đó ..... – Addicted

Các vấn đề liên quan