2016-05-05 3 views
-1

通貨形式に問題があります。古いソースでは、UIに表示するのに多くのfee valueが表示されますが、フォーマットされませんでした。表示する前にすべての値を書式設定する方法

ここでは、表示する前にすべてのベースをLocaleでフォーマットします。

このように、現在のコードを見て何か:JSPページで

private BigDecimal userFee; 

public void setUserFee(BigDecimal userFee) { 
    this.userFee = userFee; 
} 

public BigDecimal getUserFee() { 
    return userFee; 
} 

<h:outputFormat value="#{beanName.userFee}" /> 

は問題が多くのページにあまりにも多くのfee value dispayがあります。私が見ることができる唯一の解決策は、それらを1つずつフォーマットすることですが、それは良い選択ではないようです。

  1. 私の場合は通貨をフォーマットするための最良の方法:

    私は2つの質問があります。

  2. の形式は、すべてfee valueよりも優れていますか?

ありがとうございます。

+1

h:outputTextを使用せず、それぞれの中に ''を入れてみませんか? [標準コンバーターの使用:NumberConverterの使用](https://docs.oracle.com/javaee/7/tutorial/jsf-page-core001.htm#JEETT00933)を参照してください。 – VGR

+0

将来的には、300.000〜300kのように表示するための番号を短くする予定です。 – gamo

+0

アプリケーションの独自の[Coverter](http://docs.oracle.com/javaee/7/api/javax/faces/convert/Converter.html)クラスを作成し、各通貨をhにする必要があるようです。 outputTextはそれを参照してください。 – VGR

答えて

-1

私が最近行ったプロジェクトでは、BigDecimalをラップするクラスを作成し、tostringをオーバーライドして必要に応じてフォーマットします。この余分なレイヤーは、抽象レイヤーに応じて問題を引き起こす可能性があります。

public class Currency implements Serializable 
{ 
    private BigDecimal value; 

    public Currency(String val) 
    { 
     if(StringUtils.isNotEmpty(val)) 
      this.value = new BigDecimal(val).setScale(2, BigDecimal.ROUND_HALF_UP); 
    } 

    public Currency(Double val) 
    { 
     if(val!=null) 
      this.value = new BigDecimal(val).setScale(2, BigDecimal.ROUND_HALF_UP); 
    } 

    public Currency(Float val) 
    { 
     if(val!=null) 
      this.value = new BigDecimal(val).setScale(2, BigDecimal.ROUND_HALF_UP); 
    } 

    public BigDecimal getValue() 
    { 
     return value; 
    } 

    @Override 
    public String toString() 
    { 
     if(value==null) return ""; 
     return new DecimalFormat("0.00").format(value); 
    } 
} 
関連する問題