2012-05-02 76 views
12

我正在使用JSF 2和RichFaces 3.在下面顯示的圖片中,數字正在顯示爲它們在數據庫中的內容。在jsf中顯示2位十進制格式的數字

enter image description here

但我想顯示他們作爲6749395.20如果小數部分是存在的,5095138.00如果沒有小數部分是存在的。

截至目前,我已經嘗試過這樣的事情。

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

其實我顯示所有的人都在一起,但我與他們都試圖與typegroupingUsedminFractionDigitspattern所有可能的組合。

爲什麼它不起作用?這是如何造成的,我該如何解決這個問題?

+0

您的轉換器應按預期工作。 'minFractionDigits =「2」'應該足夠了。你在數據表外嘗試了嗎? –

+0

雅男人我也嘗試過數據表外,但主要問題是數據類型,並感謝@BalusC,他幫助我。 – Addicted

回答

32

如果該值根本不是Number,則可能發生這種情況,例如String。那麼你基本上對它所表示的數據使用了錯誤的類型。要用Java表示貨幣,您應該使用BigDecimal。另外,確保數據庫表中的類型是正確的,即它不應該是一個varchar,而應該是一個小數。

修復數據類型後,<f:convertNumber>將按照您的要求進行工作。請注意,pattern屬性將覆蓋groupingUsedminFractionDigits。您應該使用pattern其他。另外,type="number"已經是默認值,因此可以將其刪除。

所以,要麼使用

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

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

注意,它們產生不同的格式。您可能想要將分組設置爲false

您還可以使用type="currency",它就會自動應用正確的模式爲每UIViewRoot#getLocale()

<f:convertNumber type="currency" /> 

又見tag library documentationDecimalFormat的javadoc。

+0

實際上在我的數據庫中他們是數字,我正在用字符串讀取它們,然後試圖用某種模式將它們顯示爲數字。現在我把它改成了一個數組列表。現在它正在顯示正確和所需的格式。感謝Buddy非常感謝................ – Addicted

+0

並且使用貨幣名稱,是否有任何方法可以顯示INR符號以及盧比,就像我可以顯示Dollar($)符號一樣。 – Addicted

+0

不用了,謝謝我也是..... – Addicted