我有一个项目列表,此应用程序的用户可以选择他想要的项目。现在,我想下载每个选定项目的详细信息。我有方法:
getSelectedItems()
返回以逗号分隔的每个所选项目的ID,例如,如果用户选择2,4,6,7项,则它将返回2,4,6,7,
现在,我想把这个字符串作为params传递给控制器。我正在使用
<g:link>
标签如:
<g:link controller="items" action="downloadSelecteditems" params="${getSelectedItemss}" class="btn btn-xs ">
现在,我如何将上述方法中的所有选定项目作为此标记中的参数发送?
感谢您的时间,考虑和指导: - )
答案 0 :(得分:0)
尝试使用: 假设getSelectedItem包含一个列表,并从控制器传递列表:
ItemsController{
renderSelectedList(){
.....
selectedList = callyourservice.getSelectedItems()
render[view:'yourviewshowingtheselectedlist' model:[selectedList :selectedList ]]
}
}
在你的视图中显示选择的列表gsp:
<g:set value="${getSelectedItemss}" var="selectedItems"/>
<g:link controller="items" action="downloadSelecteditems"
params="[selectedItems:selectedItems]" class="btn btn-xs ">
在您的控制器中:
ItemsController{
.......
def downloadSelecteditems(){
println params.selectedItems //will be visible
}
}
希望它有帮助.. 此致
答案 1 :(得分:0)
已经针对该问题提出了替代解决方案。实际上我们的JavaScript在浏览器端渲染,我们的标签,例如服务器端的渲染,这就是我们无法在标签中调用JavaScript方法的原因。
由于我希望传递多个选定项目的ID(我通过调用JavaScript方法getSelectedItems获得每个所选项目的逗号分隔ID),我使用了标记,因为标签在后面使用此标记也结束了。这就是我使用这个标签的方式:
<a id="linkURL" href ="${createLink(controller: 'Controller', action: 'actionMethid')}" onclick="downloadSelectedItems()">
在JavaScript中我处理了onClick事件,其中我附加了seleceted Items的逗号分隔ID(由getSelectedItems JavaScript方法返回),其URL如下:
function downloadSelectedItems() {
var selectedSessions = getSelectedItems();
var link = document.getElementById("linkURL").href;
alert(link);
document.getElementById("linkURL").href=link+"?selectedSessions="+selectedSessions;
link = document.getElementById("linkURL").href;
alert(link);
}
因此,我能够在控制器端获得所选项目: - )