这个问题有很多,而且没有人回答......当我调用这个方法时,我的控制台中的错误弹出窗口和返回成功。是什么原因造成这种情况?
使用grails 3.1.8
grailsous方法重载方法grails.artefact.controller.support.ResponseRenderer $ Trait $ Helper#render。
无法解决[class com.union.KardexEntradaController,null]调用哪个方法,原因是: [interface grails.artefact.controller.support.ResponseRenderer,interface java.lang.CharSequence] [interface grails.artefact.controller.support.ResponseRenderer,interface java.util.Map] [interface grails.artefact.controller.support.ResponseRenderer,interface org.grails.web.converters.Converter]
def getKardexs(){
def kardexs = Kardex.createCriteria().list{
filial{
eq('id', params.long('filial'))
}
produto {
eq('categoriaKardex', CategoriaKardex.get(params.long('categoriaKardex')))
eq('ativo', true)
order('nome', 'asc')
}
}.collect{
[id: it.id, nome: it.produto.nome]
}
render ((kardexs ? kardexs : null) as JSON)
}
答案 0 :(得分:1)
我认为这是因为如果kardexs为null,那么你将null传递给ResponseRender渲染方法&有3个可供选择,一个参数,一个采用Map,另一个采用CharSequence,另一个采用转换器,你会被警告这个,也就是说你要调用哪一个是暧昧的
答案 1 :(得分:1)
Grails渲染无法呈现NULL值。这就是为什么它抛出Ambiguous方法重载错误,因为它不知道调用哪个方法。还有其他东西而不是null(可能是一些错误消息)。
答案 2 :(得分:0)
我有同样的经历,你不能呈现null,即使使用类型转换,你应该 - 如上所述 - 使用空地图,类似于:this
render ((kardexs ? kardexs : [:]) as JSON)
另一个重要的注意事项,你应该将动作 getKardexs()重命名为不同的东西,因为这被认为是上面定义的 kardexs 的getter属性(或重命名< em> kardexs 到 listKardexs 或其他东西),这可能会导致另一个异常。