【发布时间】:2014-08-07 13:35:01
【问题描述】:
在我的 Grails 2.3.7 应用程序中,我有以下命令对象
class UpdateThresholdsCommand {
Double threshold_1
Double threshold_2
}
我试图绑定到这些属性的参数是格式化的货币值,例如threshold_1=$2,459.04&threshold_2=$1,459.04
我已经定义了ValueConverter 的以下实现来执行这个绑定
class CurrencyStringToDoubleConverter implements ValueConverter {
FormatService formatService
@Override
boolean canConvert(Object value) {
value instanceof String
}
@Override
Object convert(Object value) {
formatService.parseCurrency((String) value)
}
@Override
Class<?> getTargetType() {
Double
}
}
并在resources.groovy注册
currencyStringToDoubleConverter(CurrencyStringToDoubleConverter) {
formatService = ref('formatService')
}
但是当带有如上所示参数的请求被发送到操作时,CurrencyStringToDoubleConverter 永远不会被调用,因此命令对象的threshold_1 和threshold_2 属性为空。为什么没有调用CurrencyStringToDoubleConverter?
【问题讨论】:
-
您还没有将
grails.databinding.useSpringBinder设置为true吗? Spring binder 不使用ValueConverterbeans。 -
@JeffScottBrown 不,我正在使用新的 grails binder
-
确实很神秘。我的第一个猜测是您的转换器或服务可能引发了异常,但在第二次阅读您的描述时,“从未调用 CurrencyStringToDoubleConverter”告诉我事实并非如此。
标签: grails data-binding