2016-10-15 3 views
1

Я использую динамическую панель просмотра в XPages. Проблема в том, что форматирование номера не соответствует формату, определенному в столбце вида. Я искал и обнаружил, что способ форматирования числа - через компонент настраиваемого компонента. У меня есть некоторые примеры кода этого компонента, хотя ни один из них не имел примера с форматированием столбца, содержащего число. Есть ли у кого-нибудь пример такого форматирования обработки?Форматирование номера столбца в панели просмотра dynamyc в xpage

Большое спасибо!

ответ

0

Ниже приведен фрагмент кода из метода getValueAsString() из класса ExtendedViewColumnConverter, который обрабатывает форматирование чисел на основе пользовательской локали.

Код предполагает, что переменная currentLocale содержит локаль пользователя. currentLocale - это экземпляр java.util.Locale.Locale, и я предполагаю, что у вас есть логик, который обрабатывает это, например. как часть пользовательского компонента. Если нет, то один из способов получения текущей локали, чтобы сделать это:

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-customizer и выдаю ошибку «colDef не может быть разрешен или не является полем» на строке: switch (this.colDef.getNumberFmt()). –