我从DataBase得到了这个结果。结果的数量可以是一个,多于一个,或者根本不存在。对于返回的每个寄存器,将创建一个表,并在一列内显示一个复选框。在视图中,我需要知道检查了哪个复选框,因此我可以将表的另一列的内容传递给控制器,以进行处理。这就像“数据库返回给我一个人的列表,我想向其中一些人发送电子邮件,而不是所有人。我选中复选框,查找”电子邮件“列,如果选中该人员的复选框,电子邮件已发送“。
有没有(最好是简单的)方法来实现这个目标?
谢谢。
答案 0 :(得分:2)
如果您为所有复选框指定相同的名称,但不同的值:
<g:checkBox name="sendTo" value="${firstPerson.id}" checked="${false}"/>
....
<g:checkBox name="sendTo" value="${secondPerson.id}" checked="${false}"/>
然后在控制器中你可以使用
params.list("sendTo").each { personId ->
def person = Person.get(personId)
// send email to this person
}
params.list()
是一个方便的工具,可以了解何时处理潜在的多值参数。如果没有选中复选框,则标准params.sendTo
将为您null
,如果选择了一个,则为String
,如果选择了两个或更多,则为List
。params.list("sendTo")
使用List
总是为您提供{{1}}(适当时为零,一个或多个元素)。