从GSP到控制器的Grails params为空

时间:2014-06-06 20:29:27

标签: javascript grails

我有这个按钮:

<button id = "select"
            onclick = "<g:remoteFunction controller='customer' action='selectBatch'/>"
            params: '\'batchID=\' + selectedBatchID'>Select</button>

在我的控制器中调用此方法:

def selectBatch = {
    println "Batch Selected: " + params.batchID
}

但是有了这个输出:

Batch Selected: null

以下是生成并准备要在params中传递的变量的相关javascript:

var table = document.getElementById('batchTble'),
rows = table.getElementsByTagName('tr');
var selectedBatchID;

for (var i=0,len=rows.length; i<len; i++){
rows[i].onclick = function(){
    console.log(this.cells[0].innerHTML);
    selectedBatchID = parseInt(this.cells[0].innerHTML);
    console.log(selectedBatchID)
    /* if you know it's going to be numeric:
    console.log(parseInt(this.innerHTML),10);
    */
}

我确实确认了javascript变量&#34; selectedBatchID&#34;确实打印到控制台,所以它确实保持一个值。但是价值从来没有让它成为控制器出于某种原因获得的参数。以下是Chrome调试控制台在控制器抱怨null的同时给我的内容:

17 VM3216:53
POST http://ec2-54-209-146-139.compute-1.amazonaws.com:8080/FatcaOne_0/customer/selectBatch 404 (Not Found) jquery.tools.min.js:38
send jquery.tools.min.js:38
onclick

你可以看到价值&#39; 17&#39;打印在Chrome调试控制台中,但从未将其作为params.batchID放入控制器。为什么我的参数是空的而我得到的404未找到的是我不明白的?任何帮助赞赏。我很乐意根据要求提供更多详细信息。

1 个答案:

答案 0 :(得分:1)

onclick看起来不正确。有关详细信息,请参阅docs。基于它应该是这样的:

<button id = "select"
        onclick = "${remoteFunction(controller: 'customer', 
                                    action: 'selectBatch',
                                    params: '\'batchID=\' + selectedBatchID')}">
Select
</button>

我想你已经混合了taglib和方法调用语法,如问题所示(params的键值与action和controller的属性的使用)。此外,params在问题中并不完全属于remoteFunction