Spring数字格式化与数字列表上的registercustomereditor

在spring注册customerEditor以使用给定的numberFormat实例格式化数字时,很容易将其应用于jsp中的特定字段,例如:

NumberFormat numberFormat = getNumberFormat(0, 0, 2);

PropertyEditor propertyEditor =

new CustomNumberEditor(Double.class, numberFormat, true);

binder.registerCustomEditor(Double.class, "myDoubleField", propertyEditor);

这将根据应用程序的语言环境(关于千位/小数分隔符的逗号和点)以及分隔符前后的指定小数位数,得出正确的数字格式。

但是,如果我有一个未知大小的列表,其中包含双打,如何以一种聪明的方式格式化它们?我当然可以遍历该列表,并为列表中的每个条目注册一个,但是这看起来既麻烦又错误。

由于spring绑定到带有标记的列表,所以字段名称将具有类似"myDoubleField[0] ....

myDoubleField[n]"这样的名称,因此很难…

有一个简单的解决方法吗?还是根本没有解决方法?

在此先多谢,希望有人能指出正确的方向!

回答:

通过使用全局PropertyEditorRegistrar来代替旧的繁琐的注册自定义编辑器的方法来解决。在构造函数中初始化控制器:

public myController(PropertyEditorRegistrar customPropertyEditorRegistrar) {

this.customPropertyEditorRegistrar = customPropertyEditorRegistrar;

}

并在initBinder中注册:

@Override

protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {

customPropertyEditorRegistrar.registerCustomEditors(binder);

}

强制以CustomerPropertyEditorRegistrar中指定的方式格式化所有元素。

例如。双打:

public final class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar {

// Double

PropertyEditor doubleEditor = getLocaleBasedNumberEditor(Double.class, true);

registry.registerCustomEditor(double.class, doubleEditor);

registry.registerCustomEditor(Double.class, doubleEditor);

}

如果特定字段需要其他格式,则可以用旧的方式覆盖特定字段。

//蹄

以上是 Spring数字格式化与数字列表上的registercustomereditor 的全部内容, 来源链接: utcz.com/qa/411839.html

回到顶部