【问题标题】:About saving data into grails databse关于将数据保存到 grails 数据库中
【发布时间】:2017-07-14 05:53:57
【问题描述】:

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

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

【问题讨论】:

  • 错误 500:内部服务器错误 URI /ProjectTrackerMain/milestone/save 类 java.lang.IndexOutOfBoundsException 消息索引:0,大小:0 这是错误消息
  • 通常情况下,最好提出问题,而不是仅仅发布一些代码和错误消息!

标签: grails indexoutofboundsexception


【解决方案1】:

您实际上并没有提出问题,所以这可能有点含糊!

当您尝试从没有“某物”的位置的集合中访问某物时,会发生 IndexOutOfBoundsException。例如,也许您要求列表中的第十个元素,但只有两个。在您的情况下,您在这行代码中要求第零个(用简单的英语,“First”)元素:

Employee employee = list.get(0)

并且大概列表是空的。您的错误消息显示“大小:0”。您无法从其中包含零元素的列表中获取第一个元素,因此这是索引超出范围异常。

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

session.getAttribute("empId")

查看您的员工 ID 是否符合您的预期。您还可以查看数据库中的数据,看看您是否真的设法挽救了一名员工!无论哪种方式,您都没有获得预期的数据,然后您尝试使用它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2019-11-22
    • 2017-05-13
    • 1970-01-01
    相关资源
    最近更新 更多