2016-12-06 59 views
1

有很多这个问题,他们都没有答案...当我调用这个方法时,错误弹出在我的控制台和返回是成功的。这是什么原因造成的?

使用Grails 3.1.8

暧昧方法重载的方法grails.artefact.controller.support.ResponseRenderer $特质$助手#渲染。

无法解析调用为[类com.union.KardexEntradaController,空]该方法由于之间的重叠原型: [接口grails.artefact.controller.support.ResponseRenderer,接口java.lang.CharSequence中] [接口grails.artefact.controller.support.ResponseRenderer,接口java.util.Map] [接口grails.artefact.controller.support.ResponseRenderer,接口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

我有同样的经历,你无法呈现空,即使类型转换,你应该 - 作为mentioned-使用空地图,是这样的:这

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

另外要注意,你应该因为这被认为是一个getter属性kardexs这是刚刚上面定义命名的动作getKardexs()不同的东西(或重命名kardexslistKardexs或别的东西),这可能导致另一个异常。

0

我认为这是因为如果kardexs为null,那么你会将null传入Respo nseRender渲染方法&有3种可供选择的参数,一个参数需要一个参数,另一个参数是一个CharSequence,另一个参数是转换器,你会被告知这个参数,也就是说你不知道你在调用哪一个参数。

+0

它的每一个电话甚至不为空 – fsi

+0

可能因为你使用def,这只是一个警告还是阻止你做某事?你在用什么IDE? –

0

Grails呈现器无法呈现NULL值。这就是为什么它抛出Ambiguous方法重载错误,因为它不知道调用哪个方法.Render其他的东西,而不是null(可能是一些错误信息)。