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

关于将数据保存到grails数据库,grails,indexoutofboundsexception,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(par

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

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 Class java.lang.IndexOutOfBoundsException消息索引:0,大小:0


你实际上没有问任何问题,所以这可能有点模糊

当您试图从没有内容的位置的集合中访问内容时,会发生IndexOutOfBoundsException。例如,您可能要求列表中的第十个元素,但只有两个。在您的情况下,您要求的是纯英语中的第0个元素,这行代码中的第一个元素:

Employee employee = list.get(0)
大概这个列表是空的。您的错误消息显示大小:0。无法从包含零个元素的列表中获取第一个元素,因此这是索引越界异常

为什么您的列表是0?那是另一个问题。你可以试着打印出来

session.getAttribute("empId")
查看您的员工ID是否符合您的预期。您还可以查看数据库中的数据,查看是否确实保存了一名员工!不管怎样,你没有得到你期望的数据,然后你就试图使用它


一般来说,使用调试器查看元素,或者只使用println查看值,都有助于调试此类问题。这样,您将在第1行中发现您的员工列表并不是您所期望的,而不是您稍后尝试使用它时的几行

错误500:内部服务器错误URI/ProjectTrackerMain/milestone/save Class java.lang.IndexOutOfBoundsException消息索引:0,大小:0这是错误消息正常的,最好提问,而不是发布一些代码和错误消息!