17

私は JSF 2 と RichFaces 3 を使用しています。下の図では、数字がデータベースにあるとおりに表示されています。

ここに画像の説明を入力

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>

type実際には全部まとめて表示しているのですが、 、、groupingUsedの可能な組み合わせとして全部試してみました。minFractionDigitspattern

うまくいかないのはなぜですか?これはどのように発生し、どうすれば解決できますか?

4

1 に答える 1

44

Numberこれは、たとえば a のように、値が a ではない場合に発生する可能性がありますString。基本的に、それが表すデータに間違った型を使用しています。Java で通貨を表すには、 を使用する必要がありますBigDecimal。また、データベース テーブルの型が正しいことを確認してください。つまり、varchar ではなく、decimal である必要があります。

データ型を修正すると、指定したとおり<f:convertNumber>に動作します。属性はおよびpatternをオーバーライドすることに注意してください。またはその他のいずれかを使用する必要があります。また、はすでにデフォルトであるため、削除できます。groupingUsedminFractionDigitspattern type="number"

したがって、どちらかを使用します

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

また

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

それらは異なるフォーマットを生成することに注意してください。おそらく、グループ化を に設定したいと思うでしょうfalse

を使用することもできますtype="currency"。次のように、適切なパターンが自動的に適用されますUIViewRoot#getLocale()

<f:convertNumber type="currency" />

タグ ライブラリのドキュメントDecimalFormatjavadocも参照してください。

于 2012-05-02T12:29:22.603 に答える