在数据库中提交多个值时出现错误 错误:IndexOutofBond
<form action="emp/forsubmit" method=" post">
<input id="emp[0].name" name="emp[0].name" type="text"/>
<input id="emp[0].lastname" name="emp[0].lastname" type="text"/>
<input id="emp[1].name" name="emp[1].name" type="text"/>
<input id="emp[1].lastname" name="emp[1].lastname" type="text"/>
</form>
我使用 MongoDb 作为Db
控制器源代码:
def update(){
if(empInstance.getEmp_history() == null || empInstance.getEmp_history().size() == 0) {
empInstance.setEmp_history(new ArrayList<EmpHistory>());
empInstance.getEmp_history().add(new EmploymentHistory());
}
empInstance.properties = params
}
答案 0 :(得分:2)
使用相同的名称属性值:
First: <input type="text" name="firstname"/>
First: <input type="text" name="lastname"/>
Second: <input type="text" name="firstname"/>
Second: <input type="text" name="lastname"/>
当提交表单时,它们将被grails处理为数组,然后为每个循环填充域对象:
params.firstname.eachWithIndex { value, index ->
// use index to access the values in other array
// params.lastname[index]
def mydomain = new MyDomain()
mydomain.firstname = value
mydomain.lastname = params.lastname[index]
mydomain.save()
}
答案 1 :(得分:0)
使用相同的名称属性值:
First: <input type="text" name="firstname"/>
First: <input type="text" name="lastname"/>
Second: <input type="text" name="firstname"/>
Second: <input type="text" name="lastname"/>
下面的代码工作,即使元素只有一个,它们将在提交表单时由grails处理为数组,然后为每个循环填充域对象:
def firstName = params.list('firstname')
def lastName = params.list('lastname')
firstName.eachWithIndex { value, index ->
// use index to access the values in other array
// params.lastname[index]
def mydomain = new MyDomain()
mydomain.firstname = value
mydomain.lastname = lastName[index]
mydomain.save()
}