为什么我的<Object>列表没有显示在我的网页上?



我正在尝试显示列表的内容<>链接到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"命名的模型属性。

最新更新