我正在Spring Boot中开发一个应用程序。 但是我陷入了Java循环中。为什么会犯这样的错误。 即使我尚未对ArrayList进行任何设置,也会发生此错误。 java.lang.IndexOutOfBoundsException:索引:0,大小:0
这是我的代码:
@RequestMapping("/update")
public String Update(@RequestParam(value = "this") int updateId,Model model,String newName,String newSurname,String newCountry) {
model.addAttribute("id",updateId);
model.addAttribute("name",personList.get(updateId).getName());
model.addAttribute("surname",personList.get(updateId).getSurname());
model.addAttribute("country",personList.get(updateId).getCountry());
for (Person person : personList) {
System.out.println(personList.size());
if (person.getId()==updateId) {
if (null!=newName) {
person.setName(newName);
updateControl+=1;
System.out.println(personList.size());
}
if (null!=newSurname) {
updateControl+=1;
person.setSurname(newSurname);
}
if (null!=newCountry) {
person.setCountry(newCountry);
updateControl+=1;
}
}
}
if (updateControl==0) {
return "update";
}
else {
return "redirect:/";
}
}
这是我的错误:
There was an unexpected error (type=Internal Server Error, status=500).
Index: 0, Size: 0
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
答案 0 :(得分:1)
如果您的personList
为空,则无法在其上调用personList.get()
。
您应该检查索引updateId
是否小于personList
大小。
@RequestMapping("/update")
public String Update(@RequestParam(value = "this") int updateId,Model model,String newName,String newSurname,String newCountry) {
model.addAttribute("id",updateId);
if (updateId < personList.size()) {
model.addAttribute("name",personList.get(updateId).getName());
model.addAttribute("surname",personList.get(updateId).getSurname());
model.addAttribute("country",personList.get(updateId).getCountry());
// ...
}
我也经常喜欢使用保护子句:
@RequestMapping("/update")
public String Update(@RequestParam(value = "this") int updateId,Model model,String newName,String newSurname,String newCountry) {
model.addAttribute("id",updateId);
if (updateId >= personList.size()) {
throw new EntityNotFoundException();
}
// ...
如果您确定索引为updateId
的元素一定存在,也许您也没有正确初始化或加载personList。
答案 1 :(得分:0)
错误显示,列表中没有数据。 但是,您尝试从空列表中获取数据。
model.addAttribute("name",personList.get(updateId).getName());
model.addAttribute("surname",personList.get(updateId).getSurname());
model.addAttribute("country",personList.get(updateId).getCountry());
请检查您的personList
。
答案 2 :(得分:0)
错误消息清楚地表明,您正在访问Index: 0
列表中的Size: 0
元素。
您可以在开始时添加null检查以避免这种情况,
if (null != personList && ! personList.isEmpty()) {
//rest of code
}