2016-10-15 9 views
1

私はXPageでダイナミックビューパネルを使用しています。数値の書式設定がビュー列で定義された書式に従わないという問題。 私は検索して、番号をフォーマットする方法がカスタマイザビーンを介していることを発見しました。このBeanのコード例をいくつか見てきましたが、どれも数字を含む列の書式設定の例はありませんでした。 誰もこの治療のフォーマットの例を持っていますか?ダイナミックビューパネルの列番号をxページの書式設定

ありがとうございます!

答えて

0

ユーザーのロケールに基づいて数値の書式設定を処理するExtendedViewColumnConverterクラスのgetValueAsString()メソッドのコードスニペットです。

コードでは、変数currentLocaleにユーザーロケールが含まれていることを前提としています。 currentLocaleはjava.util.Locale.Localeのインスタンスで、これを処理するlogikがあると仮定します。ユーザーBeanの一部としてない場合は、現在のロケールを取得する一つの方法は、これを行うことです。

Locale currentLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale(); 

もちろん(つまりDominoViewCustomizerを拡張)すでに作業カスタマイザBeanを持っている必要があります。

public static class ExtendedViewColumnConverter extends ViewColumnConverter { 

    ... 

    @Override 
    public String getValueAsString(final FacesContext context, final UIComponent component, final Object value) { 

     if (value instanceof Number) { 
      NumberFormat nf = NumberFormat.getInstance(currentLocale); 
      DecimalFormat df = (DecimalFormat) nf; 
      df.setRoundingMode(RoundingMode.HALF_UP); 
      switch (this.colDef.getNumberFmt()) { 
      case ViewColumn.FMT_GENERAL: { 
       // no further formatting needed 
       break; 
      } 
      case ViewColumn.FMT_FIXED: { 
       df.setMinimumFractionDigits(this.colDef.getNumberDigits()); 
       df.setMaximumFractionDigits(this.colDef.getNumberDigits()); 
       break; 
      } 
      default: { 
       // no further formatting needed 
       break; 
      } 
      } 
      return df.format(value); 
     } 
    } 

    ... 

} 
+0

ありがとうございます。変数currentlocaleはどこにありますか?それは財産ですか? –

+0

私はcurrentLocaleの説明を追加しました –

+0

申し訳ありませんが、私はJavaでの経験はほとんどありません。私はあなたのコードを私のbeanのカスタマイザに入れて、 'colDefは解決できない、またはフィールドではない'というエラーをスイッチに与えています:switch(this.colDef.getNumberFmt())。 –

関連する問題