grails.artefact.controller.support.ResponseRenderer$Trait$Helper#render方法的方法重载不明确

grails.artefact.controller.support.ResponseRenderer$Trait$Helper#render方法的方法重载不明确,grails,Grails,这个问题有很多,但没有一个答案。。。当我调用这个方法时,我的控制台中会弹出错误,返回success。原因是什么 使用Grails3.1.8 方法grails.artifact.controller.support.ResponseRenderer$Trait$Helper#render的方法重载不明确 无法解析要为[class com.union.KardexEntradaController,null]调用的方法,因为以下对象之间的原型重叠: [接口grails.artifact.contro

这个问题有很多,但没有一个答案。。。当我调用这个方法时,我的控制台中会弹出错误,返回success。原因是什么

使用Grails3.1.8

方法grails.artifact.controller.support.ResponseRenderer$Trait$Helper#render的方法重载不明确

无法解析要为[class com.union.KardexEntradaController,null]调用的方法,因为以下对象之间的原型重叠: [接口grails.artifact.controller.support.responsenderer,接口java.lang.CharSequence] [接口grails.artifact.controller.support.ResponseRenderer,接口java.util.Map] [接口grails.artifact.controller.support.responsenderer,接口org.grails.web.converters.Converter]


我认为这是因为如果kardex为null,那么您将null传递到ResponseRender render方法中&有三种方法可供选择,一种是使用单个参数,一种是使用Map,另一种是使用CharSequence,另一种是使用Converter,您会收到警告,也就是说,调用哪一个是不明确的。

Grails render无法呈现空值。这就是它抛出不明确方法重载错误的原因,因为它不知道调用哪个方法。在null上呈现其他内容(可能是一些错误消息)。

我也有同样的经验,即使使用类型转换,也不能呈现null,正如前面提到的,您应该使用一个空映射,类似这样:

render ((kardexs ? kardexs : [:]) as JSON)

另一个重要注意事项是,您应该将操作getkardex()重命名为其他名称,因为这被认为是上面定义的kardex的getter属性(或者将kardex重命名为listkardex或其他名称),这可能会导致另一个异常。

它的每次调用甚至不是null,可能是因为您使用的是def,这只是一个警告还是阻止你做什么?你用的是什么IDE?
render ((kardexs ? kardexs : [:]) as JSON)