我在XPage中使用动态视图面板。格式化数字的问题不遵循视图列中定义的格式。 我搜索并发现格式化数字的方法是通过定制器bean。我已经有了这个bean的一些代码示例,尽管它们都没有格式化包含数字的列的示例。 有没有人有这种处理格式的例子?
非常感谢!
答案 0 :(得分:0)
以下是来自getValueAsString()
类的ExtendedViewColumnConverter
方法的代码段,该方法根据用户区域设置处理数字格式。
代码假定变量currentLocale
包含用户区域设置。 currentLocale是java.util.Locale.Locale的一个实例,我假设你有logik来处理这个问题,例如:作为用户bean的一部分。如果没有,那么获取当前语言环境的一种方法是:
Locale currentLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
你当然应该有一个已经工作的定制器bean(扩展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);
}
}
...
}