gpt4 book ai didi

grails - 将命令对象与 ValueConverter 绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 15:07:29 27 4
gpt4 key购买 nike

在我的 Grails 2.3.7 应用程序中,我有以下命令对象

class UpdateThresholdsCommand {
Double threshold_1
Double threshold_2
}

我试图绑定(bind)到这些属性的参数是格式化的货币值,例如 threshold_1=$2,459.04&threshold_2=$1,459.04
我已经定义了 ValueConverter 的以下实现执行此绑定(bind)
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_1threshold_2命令对象的属性为空。为什么不是 CurrencyStringToDoubleConverter被调用?

最佳答案

您描述的方法确实有效。在 https://github.com/jeffbrown/donalconverter 上查看应用程序.运行该应用程序并单击主索引页面上的链接。 FormatService被硬编码为返回 21.12 (参见 https://github.com/jeffbrown/donalconverter/blob/7a01031deceeea0d857af23f58686b4f1f824e1d/grails-app/services/demo/FormatService.groovy#L7 ),但应用程序显示转换器正在被调用并且转换器正在委派给服务。
你还没有展示你的FormatService是在做。可能是该代码中有问题并且引发了异常,在这种情况下,您的命令对象应该具有与之关联的相应绑定(bind)错误。
如果没有看到您的代码或看到任何相关错误,很难说出出了什么问题,但链接的应用程序应该证明正在调用转换器,至少在该应用程序中是这样。
应用程序中的相关文件:

  • grails-app/conrollers/demo/DemoController.groovy
  • grails-app/services/demo/FormatService.groovy
  • src/groovy/demo/CurrencyStringToDoubleConverter.groovy
  • grails-app/conf/spring/resources.groovy

  • 我希望这会有所帮助。

    关于grails - 将命令对象与 ValueConverter 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25183990/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com