这是我的项目代码,我想将数据保存到数据库中。
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
答案 0 :(得分:0)
你实际上没有提出问题,所以这可能有点模糊!
当您尝试从没有“某事”的位置的集合中访问某些内容时,会发生IndexOutOfBoundsException。例如,您可能要求列表中的第十个元素,但只有两个元素。在你的情况下,你要求这行代码中的第0个(简单的英文,“First”)元素:
Employee employee = list.get(0)
并且可能是列表是空的。您的错误消息显示“大小:0”。你不能从列表中得到零元素的第一个元素,所以这是一个超出范围的索引例外。
为什么你的名单是0?那是一个不同的问题。您可以尝试打印
session.getAttribute("empId")
查看您的员工ID是否符合预期。您还可以查看数据库中的数据,看看您是否真的设法保存了员工!无论如何,你没有得到你期望的数据,然后你就试图使用它。
通常,使用调试器查看元素,或者只是使用“println”来查看值,这有助于调试此类问题。这样,你会在第1行找到你的员工名单不符合你的预期,而不是在你尝试使用它时的几行!