如何知道选择了哪个复选框

时间:2012-10-10 09:48:48

标签: grails

我从DataBase得到了这个结果。结果的数量可以是一个,多于一个,或者根本不存在。对于返回的每个寄存器,将创建一个表,并在一列内显示一个复选框。在视图中,我需要知道检查了哪个复选框,因此我可以将表的另一列的内容传递给控制器​​,以进行处理。这就像“数据库返回给我一个人的列表,我想向其中一些人发送电子邮件,而不是所有人。我选中复选框,查找”电子邮件“列,如果选中该人员的复选框,电子邮件已发送“。

有没有(最好是简单的)方法来实现这个目标?

谢谢。

1 个答案:

答案 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,如果选择了两个或更多,则为Listparams.list("sendTo")使用List 总是为您提供{{1}}(适当时为零,一个或多个元素)。