让我们说,我有这个场景:
但是,假设我有数百个复选框,我需要在提交表单后同时处理所有内容。然后,我需要根据检查的框以及每个块的id
将某些内容保存到BD所以,我需要这个:
a)一种了解数百个复选框的方法 b)每个复选框应与一个即时传递的ID“链接”,以便执行特定的操作。
我有一个<g:each>
标签,写了整个表格,从数据库中读取值。我很感激任何帮助,
谢谢先进,RR
答案 0 :(得分:2)
您可以将params绑定到域对象或命令对象的List属性。
查看:
<g:each in="${elements}">
<g:checkBox name="elementSelected[${it.id}]" value="${it.id}" />
</g:each>
命令对象:
class ElementCommand {
List elementSelected
}
控制器:
def execute = { ElementCommand cmd ->
cmd.elementSelected.each {
if (it) {
processId(it.toInteger())
}
}
}
答案 1 :(得分:1)
在你的gsp中你需要显示所有的复选框:
<g:each in="${model}" status="i" var="invoiceItem">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td>
<g:checkBox name="invoiceItem_${i}"/>
</td>
</tr>
</g:each>
在控制器操作中,您需要将所选复选框映射到域对象
List invoiceList = session.invoiceList
params.each {
if (it.key.contains("invoiceItem_")){
if (it.value.contains("on")){
InvoiceItem invoiceItem = invoiceList.get((it.key - "invoiceItem_") as Integer)
}
}
}