我有一个上传和处理文件的控制器。之后,我希望将处理结果呈现为模态div。我想知道将控制器的结果传递给gsp上的模态div的最佳方法是什么。我想到了一个模板,但我不知道如何指定模板的目标div应该是什么,因为这个模板不会通过按钮单击来呈现,其中模板渲染的目标被设置为属性,它将在定时的基础上完成(即文件上传完成时)。另一种方法是从控制器发回JSON,但我不知道如何在正确的时间拦截这个JSON,因为我还不太了解GSP和Controller之间信息流的时间。我知道如何发送JSON,但是如何向GSP发出警告,嘿,现在有些JSON已经准备好迎接即将升级的模式。"这里有一些基本上是我想要完成的pseoducode。
控制器:
upload() {
// process file and store results in three integers
// int1 = result1
// int2 = result2
// int3 = result3
// send the three numbers to the gsp
}
现在将这三个数字输入GSP的最佳方法是什么,以便它们显示在一个模态对话框中,该对话框将会像这样:
<div id="fileUploadResultsModal">
Results:
${int1}, ${int2}, ${int3}
</div>
这是与我的ajax上传功能相关联的JS:
$("#chseFile").upload("${createLink(controller: 'customer', action: 'upload',)}",
{dataTypegrp: parseInt(getCheckedValue(document.getElementsByName('dataTypegrp'))),
fileTypegrp: parseInt(getCheckedValue(document.getElementsByName('fileTypegrp')))},
function(success) {
$("#cancel1").trigger("click");
setTimeout(function(){
$("#summary").trigger("click");
}, 250);
displaySuccess(data);
},
function(prog, value) {
console.log(value);
$("#prog").val(value);
if (value == 100) {
$("#prog").hide();
$("#progressbar").html("Uploading and processing. Please wait...");
}
});
但是现在JS抱怨说&#39;数据&#39;没有定义。 &#39;数据&#39;意味着是从控制器回来的JSON。
由于
答案 0 :(得分:3)
你可以将它们渲染为JSON:
render( [ int1:111, int2:222, int3:333 ] as JSON )
或作为HTML字符串
render "<div id=\"fileUploadResultsModal\">Results:${int1}, ${int2}, ${int3}</div>"
或使用模板
render template:'/yourController/templateName', model:[ int1:111, int2:222, int3:333 ]
或TagLib
render g.yourResultTag( int1:111, int2:222, int3:333 )
对于这一小部分信息,性能并不值得关注。这相当于品味,或者更适合您的客户。
如果后者是JSON偏向的,请使用JSON渲染。如果它混合使用JSON和HTML,请使用其他。
答案 1 :(得分:0)
控制器动作的enf控制器内部可以使用
(function(){
console.log('holla at world');
})()
这会将数据呈现给GSP