关于将数据保存到grails数据库中

时间:2017-07-14 05:53:58

标签: grails indexoutofboundsexception

这是我的项目代码,我想将数据保存到数据库中。

def save(){
    List<Employee> list = Employee.findAllById(session.getAttribute("empId"))
    Milestone milestone = new Milestone()
    milestone.setMilestone_Date(params.milestone_Date)
    milestone.setMilestone_Name(params.milestone_Name)
    milestone.setMilestone_Description(params.milestone_Description)
    milestone.save()
    EmployeeMilestone employeeMilestone=new EmployeeMilestone()
    Employee employee = list.get(0)
    employeeMilestone.setEmployee(employee)
    employeeMilestone.setMilestone(milestone)
    employeeMilestone.save()
    [employeeMilestones:employeeMilestone]
}

我收到此错误

  

错误500:内部服务器错误URI / ProjectTrackerMain / milestone / save类java.lang.IndexOutOfBoundsException消息索引:0,大小:0

1 个答案:

答案 0 :(得分:0)

你实际上没有提出问题,所以这可能有点模糊!

当您尝试从没有“某事”的位置的集合中访问某些内容时,会发生IndexOutOfBoundsException。例如,您可能要求列表中的第十个元素,但只有两个元素。在你的情况下,你要求这行代码中的第0个(简单的英文,“First”)元素:

Employee employee = list.get(0)

并且可能是列表是空的。您的错误消息显示“大小:0”。你不能从列表中得到零元素的第一个元素,所以这是一个超出范围的索引例外。

为什么你的名单是0?那是一个不同的问题。您可以尝试打印

session.getAttribute("empId")

查看您的员工ID是否符合预期。您还可以查看数据库中的数据,看看您是否真的设法保存了员工!无论如何,你没有得到你期望的数据,然后你就试图使用它。

通常,使用调试器查看元素,或者只是使用“println”来查看值,这有助于调试此类问题。这样,你会在第1行找到你的员工名单不符合你的预期,而不是在你尝试使用它时的几行!