grails视图中未知数量的模型对象

grails视图中未知数量的模型对象,grails,model,webforms,Grails,Model,Webforms,在Grails2.2中工作 我需要能够处理视图中未知数量的CommitteeMember。这些都需要创建和显示 每一个都有通常的属性-姓名、地址、联系信息、用户ID 我知道,如果我将表单字段命名为相同的名称,Grails将返回一个集合供我迭代。然而,在这种情况下,我面临这样的情况: cm_名字 cm_姓氏 cm_地址 电子邮件 cm_用户ID 那么这是否意味着我将获得这些字段的集合?这并没有那么有用,因为没有办法用正确的姓氏对不同的名字进行核心化,等等 我很喜欢Grails,期待您的反馈。您可以

在Grails2.2中工作

我需要能够处理视图中未知数量的CommitteeMember。这些都需要创建和显示

每一个都有通常的属性-姓名、地址、联系信息、用户ID

我知道,如果我将表单字段命名为相同的名称,Grails将返回一个集合供我迭代。然而,在这种情况下,我面临这样的情况:

cm_名字

cm_姓氏

cm_地址

电子邮件

cm_用户ID

那么这是否意味着我将获得这些字段的集合?这并没有那么有用,因为没有办法用正确的姓氏对不同的名字进行核心化,等等

我很喜欢Grails,期待您的反馈。

您可以用它来为您完成这项工作。这里有个问题。基本上,您将有一个
committeembers
的单一集合,这些成员将通过数据绑定填充到您的控制器中

正如@Gregg所说,在视图中,您需要字段具有索引

class MyDomain {
  String name
}

class MyDomainCommand {
  List<MyDomain> instances = ListUtils.lazyList([], FactoryUtils.instantiateFactory(MyDomain))
}

class MyController {
  def save() {
    MyDomainCommand command = new MyDomainCommand()
    bindData(command, params, [include: 'instances'])
  }
}
类MyDomain{
字符串名
}
类MyDomainCommand{
List instances=ListUtils.lazyList([],FactoryUtils.InstanceFactory(MyDomain))
}
类MyController{
def save(){
MyDomainCommand=new MyDomainCommand()
bindData(命令,参数,[包括:'实例']))
}
}

我会告诉你我做什么,这可能是最好的选择,也可能不是。我这样做主要是因为我不喜欢数据绑定

以您的案例为例,我会将我的字段命名为:“cm.firstName、cm.lastName、cm.address、cm.email、cm.userId”

如果您在服务中:

GrailsWebRequest webUtils = WebUtils.retrieveGrailsWebRequest()

List committeeMembers = [].withDefault {new GrailsParameterMap([:], webUtils.getCurrentRequest())}
在控制器中:

List committeeMembers = [].withDefault {new GrailsParameterMap([:], request)}
然后

然后你可以做:

committeeMembers.each {
    <Create from it.firstName, it.lastName, etc>
}
committeembers.each{
}

您是一次创建一个成员集合,还是每次提交时保存一个成员并显示给他?grails会将它们作为索引数组发送回去,因此cm_firstname[0]和cm_lastname[0]将属于同一组,等等。我正在创建0。。一次n个成员。谢谢,@Gregg-我试试。谢谢你的回答。我是从我的评论中得出这个结论的。:)这也很酷。这将表单中的字段名与域类中的字段名分离,这很有用。我将选中这一个,因为我使用了它,但这两个答案都是合理的。再次感谢!
committeeMembers.each {
    <Create from it.firstName, it.lastName, etc>
}