2012-05-02 20 views
12

私はJSF 2とRichFaces 3を使用しています。下の画像では、数値はデータベース内の数値として表示されています。jsfで2桁の10進数で数字を表示

enter image description here

しかし、私は何の小数部がない場合は小数部があると5095138.00ある場合6749395.20としてそれらを表示したいです。

今のところ私はこのようなことを試みました。

<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 "'で十分です。 dataTableの外で同じものを試しましたか? –

+0

ya man私もdatatableの外で試しましたが、主な問題はデータ型で、@ BalusCのおかげで彼は私を助けました。実際に私のデータベースには – Addicted

答えて

32

値がNumberでない場合に発生します。たとえば、Stringです。基本的には、それが表すデータに間違ったタイプを使用しています。 Javaで通貨を表すには、BigDecimalを使用する必要があります。また、データベース表のタイプが正しいことを確認してください。つまり、varcharではなく小数点にしてください。

データタイプを修正したら、<f:convertNumber>はあなたの指示どおりに動作します。 pattern属性はgroupingUsedminFractionDigitsよりも優先されます。 またはのいずれかを使用する必要があります。また、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

という数字がありました。私は文字列でそれらをフェッチしていて、いくつかのパターンで数字として表示しようとしていました。今私はそれをarraylistに変更しました。これで正しい形式が表示されます。ありがとうバディありがとうございました................ – Addicted

+0

名前通貨で、ドル記号($)を表示できるようにルピーと共にINR記号を表示する方法はありますか? – Addicted

+0

いいえ、私もそれを得た..... – Addicted

関連する問題