在一个Wicket应用中,我有一个小数数字文本框:
TextField<BigDecimal> f =
new TextField<BigDecimal>("f", new PropertyModel<BigDecimal>(model, "share"));
我希望它始终接受 .(点)和,(逗号)作为十进制分隔符(不考虑浏览器的语言环境设置)。
用于 显示 值的是会话的语言环境[在我们的情况下被强制为“fi”(->逗号)],但我在这里关心的是该字段 接受 的输入。
我的问题是,我是否必须将该字段更改为 TextField<String>
并手动转换为域对象的类型(BigDecimal)?还是有一些方法可以使用 TextField<BigDecimal>
(例如利用Wicket的MinimumValidator或RangeValidator),并仍然接受两种十进制分隔符?
.
用于千位分隔符,而,
则作为小数点。如果你想要一个通用的数字解析器,请确保你的代码能够处理像32.519.100,28
这样的数字。 - biziclop