2016-10-15 18 views
1

我正在使用XPages中的動態視圖面板。格式化數字的問題不符合視圖列中定義的格式。 我搜索並發現格式化數字的方式是通過定製程序bean。我已經得到了這個bean的一些代碼示例,儘管它們都沒有格式化包含數字的列的示例。 有沒有人有這種治療格式的例子?格式化xpage中dynamyc視圖面板中的列編號

非常感謝!

回答

0

下面是一個getValueAsString()方法的代碼片段,該方法從ExtendedViewColumnConverter類中處理基於用戶語言環境的數字格式。

該代碼假定變量currentLocale包含用戶區域設置。 currentLocale是java.util.Locale.Locale的一個實例,我假設你有logik來處理這個例如作爲用戶bean的一部分。如果沒有,獲取當前區域設置的,其中一個方法就是做這個:當然

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

你應該有一個已經工作的定製豆(擴展DominoViewCustomizer)。

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

Thanks Per。變量currentlocale在哪裏?這是一個財產嗎? –

+0

我已經添加了對currentLocale的解釋 –

+0

對不起,但是我對java很少有經驗。我把你的代碼放到我的bean定製器中,並給出錯誤'colDef無法解析或不是字段':switch(this.colDef.getNumberFmt())。 –