[英]Grails 2.3.x Updating a List in GSP (View) and save changes in the Database
想象一下,您有一个表,该表显示书籍列表(如索引一样),并且您想在名为“已售出”(例如复选框)的列中进行更改。 因此,一旦完成“检查”已售出的书籍,就希望将其保存在数据库中。 您如何将该列表发回控制器并进行更新?
因此,在控制器中,代码是这样的:
def aMethod(){
...
[bookInstanceList: myBookList]
}
在GSP中:
<g:each in="${bookInstanceList}" status="i" var="bookInstance">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
<td><g:link action="show" id="${bookInstance.id}">${fieldValue(bean: bookInstance, field: "author")}</g:link></td>
<td><g:checkBox name="sold" value="${bookInstance?.sold}" /></td>
<td>
</tr>
</g:each>
这个想法是通过复选框允许用户更改该书的“已售”值。 如何保存新的bookInstanceList?
非常感谢你
从我看来,您想在用户单击复选框时动态更新后端吗?
如果是这样,那么您需要进行ajax调用,例如:
<g:each in="${bookInstanceList}" status="i" var="bookInstance">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
<td><g:link action="show" id="${bookInstance.id}">${fieldValue(bean: bookInstance, field: "author")}</g:link></td>
<td><g:checkBox name="sold" value="${bookInstance?.sold}" onChange="TriggerFilter(this)" /></td>
<td>
</tr>
</g:each>
<g:javascript>
function TriggerFilter(e) {
if (e.checked==true) {
$.get('<g:createLink action='Your_Action' controller="YourController"
params="[ filterbind: ''+attrs.filterbind+'',term:''+attrs.term+'' ]"/>'
,function(data){
$('#FilterField').hide().html(data).fadeIn('slow');
});
}else{
$('#FilterField').hide().html('').fadeIn('slow');
}
}
</g:javascript>
<div id="FilterField" class="filterField">
{Result returned in here}
</div>
您需要将其e.value放入参数中,看看grails Java脚本get createLink,这里的插件中有很多示例:
https://github.com/vahidhedayati/ajaxdependancyselection/tree/master/grails-app/views
我建议在网上查找/阅读使用方法
您可能希望将get更改为:
如何在JavaScript中使用grails $ {createLink}
var url = '${createLink(controller:'Books', action: 'update')}' + e.value ;
$.get(url ,function(data){
$('#FilterField').hide().html(data).fadeIn('slow');
});
}else{
$('#FilterField').hide().html('').fadeIn('slow');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.