我正在尝试显示列表的内容<>链接到jsp页面上当前登录的用户的对象。该对象已成功创建并存储在数据库中,具有创建它的用户的user_id,并且使用简单的system.out.print调试器,我可以看到它已添加到列表中。
但是当我尝试在NewFile.jsp网页上显示它时,就好像列表是空的。没有错误,相反,页面只是空白的,就好像没有要循环访问的列表一样。
用户控制器中的技能方法
@RequestMapping(value = "/skill", method = RequestMethod.POST)
public String skill(@ModelAttribute("skillForm") Skill skillForm, BindingResult bindingResult, Model model, Principal principal) {
skillValidator.validate(skillForm, bindingResult);
if (bindingResult.hasErrors()) {
return "skill";
}
// Adds skill object to database and adding it to Users skill list
String name = principal.getName();
skillService.save(skillForm, name);
User currentUser = userService.findByUsername(principal.getName());
currentUser.addSkill(skillForm);
// Debug here shows that the list contains correct data and the list size
System.out.println(skillForm.getSkillName());
System.out.println(skillForm.getCategory());
System.out.println(currentUser.getSkills().size());
// Attempting to pass the list to NewFile.jsp to be displayed
List<Skill> savedSkills = currentUser.getSkills();
for(int i = 0; i < savedSkills.size(); i++) {
model.addAttribute("skills", savedSkills);
/*model.addAttribute("currentUser", currentUser);*/
}
return "NewFile";
}
新建文件.jsp
<table>
<c:forEach var="o" items="${savedSkills}" >
<tr>
<td>Skill Name:<c:out value = "${o.skillName}"/></td>
<td>Category:<c:out value = "${o.category}"/> </td>
</tr>
</c:forEach>
</table>
有一些错误。首先,您不需要循环。
List<Skill> savedSkills = currentUser.getSkills();
model.addAttribute("skills", savedSkills);
其次,你的EL有错误的参数名称,就像其他人所说的那样。
<c:forEach var="o" items="${skills}" >
您需要指定要添加的技能,您将 List 添加为属性,但您需要在其中
的对象for(int i = 0; i < savedSkills.size(); i++) {
model.addAttribute("skills", savedSkills[i]);
/*model.addAttribute("currentUser", currentUser);*/
}
尝试在 return 语句之前添加代码model.addAttribute("savedSkills", savedSkills);
。您尚未添加以"savedSkills"命名的模型属性。