Grails 2.3.8函数由自己调用



我的控制器中有这个grails函数:

def remediationSearch() {
        def resultList
        if (params.rerender) {
            println "<><><> remediationsearch called with rerender."
            resultList = recordSearchService.individualSearch(session.oldIndRemedParams)
        }
        else {
            params.selectedBatch = selectedBatch
            session.oldIndRemedParams = params
            resultList = recordSearchService.individualSearch(params)
            println "<><><> remediationsearch called fresh."
        }
        render(template: 'indivSearchResults', model: [resultList: resultList, resultCount: resultList?.size()])
        println "<><><> remediationsearch done at " + new Date()
    }

当我调用这个与它无关的方法(在同一个控制器中)时,它似乎被调用了:

def chooseupload = {
        println "<><><> Begin choose/upload at: " + System.nanoTime()
        if (session.user == null) {
            render(contentType: 'text/json') {
                [success: true, url: createLink(controller: 'customer', action: 'logout')]
            }
        }
        else {
            selectedBatch = null
            def batchList = (Batch.findAllWhere(userId: session.user.id.toLong(), [sort: "lastUpdate", order: "desc"]))
            render(template: 'chooseupload', model:  [batchList: batchList, batchCount: batchList.size()])
        }
        println "<><><> End choose/upload at: " + System.nanoTime()
    }

第二个方法完成执行,然后由于我不理解的原因调用了第一个方法。它(第一个函数)是由某个浏览器机制调用的吗?因为它在会话中存储内容而被调用?如果有任何正确的指示,我将不胜感激。我通过调用"chooseupload"方法打印了这个:

<><><> Begin choose/upload at: 446158993759810
<><><> End choose/upload at: 446159022252873
<><><> Begin remediationSearch at: 446159080286132
<><><> Rerender call to entityRemediationSearch.
<><><> End remediationSearch at: 446159135646835

因此,发生的情况是chooseupload函数的模板渲染,但它立即被remediationSearch()函数渲染的模板渲染。这是一个令人不快的结果,导致我对整件事进行了调查。

不确定这作为评论或回答是否更有意义,但我没有发表评论所需的50个声誉,所以这里是一个答案:-)

我注意到,在你的文本输出中,你有一行:

<><><> Rerender call to entityRemediationSearch.

但您提供的代码中没有包含这一点。是否可能您使用的IDE没有正确清除类文件的旧版本?chooseupload()是否在某个时间点调用了remediationSearch()?如果是这样的话,那么在运行grails clean之后,尝试从命令行运行它似乎会很好。

最新更新