gpt4 book ai didi

validation - 带有字段的 Grails NumberFormatException 或 GroovyCastException,导致它

转载 作者:行者123 更新时间:2023-12-02 15:21:35 26 4
gpt4 key购买 nike

我在服务中抛出异常(尤其是这些验证)并在 Controller 中 try catch 它们。我正在获取数据

在公司 Controller 中:

try{
def data = request.JSON
firmService.createAndSave(data)
}
catch(ValidationException exception){
}

在公司服务:
def createAndSave(data){
firm.year = data.year as BigDecimal
firm.price = data.price as Float
firm.employees = data.employees as Integer
firm.name = data.name
if(!firm.validate()){
throw new ValidationException(null, firm.errors)
}
firm.save(flush:true)
firm
}

但如果我发送带有无效数据的 JSON: {year:"asd", price: "fgh", employees: "3", name: "zxc"}我得到了一个 NumberFormatException。我知道,我可以在 Controller 中捕获 NumberFormatException (或我自己的某种异常),但我怎样才能获得它被抛出的字段/属性(并且仍然将它作为异常抛出)?

最佳答案

使用您用来初始化域对象的当前方法,您无法做到这一点。当 grails 尝试转换 String 时,NFE 被抛出。值(value) asdBigDecimal ( data.year as BigDecimal ) 与 ValidationException 无关.
JSONObject类实现 Map在 grails 中,所有域都有一个接受 Map 的构造函数。并且可以使用 map 属性初始化对象。因此,您可以使用 new Firm(data) 直接实例化对象,而不是手动绑定(bind)每个属性。在 firmService .这样,当 grails 尝试将非十进制值绑定(bind)到 BigDecimal 时,您将得到绑定(bind)异常。类型字段。

关于validation - 带有字段的 Grails NumberFormatException 或 GroovyCastException,导致它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35134717/

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