我有这个按钮:
<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未找到的是我不明白的?任何帮助赞赏。我很乐意根据要求提供更多详细信息。
答案 0 :(得分:1)
onclick
看起来不正确。有关详细信息,请参阅docs。基于它应该是这样的:
<button id = "select"
onclick = "${remoteFunction(controller: 'customer',
action: 'selectBatch',
params: '\'batchID=\' + selectedBatchID')}">
Select
</button>
我想你已经混合了taglib和方法调用语法,如问题所示(params的键值与action和controller的属性的使用)。此外,params
在问题中并不完全属于remoteFunction
。