【问题标题】:JSP Iterate over a user-defined class that inheritsJSP 迭代一个用户定义的类,该类继承
【发布时间】:2014-12-31 19:43:44
【问题描述】:

我有两个实体类,它们代表我的数据库中的两个表。 这两个表是用户和学生。 Student 类(userID,studentID,classID)继承自 User 类(id,firstName,lastName,email)。 当我在数据库中查询学生时,我返回了一个列表。然后,我想使用该列表来迭代并显示每个学生的名字、姓氏、电子邮件和班级 ID。但是,它只显示 classID。我相信这是因为该对象是一个只包含三个字段(userID、studentID、classID)并且不包含姓名和电子邮件的学生。但是,由于 Student 类扩展了 User 类,我认为它应该仍然能够获取其他字段。

这是我的课程

用户

public class User {
private int id;
private String firstName;
private String lastName;
private String email;

public User(){

}

public String getFullName(){
    return firstName +" "+ lastName;
}
public int getID() {
    return id;
}

public void setID(int id) {
    this.id = id;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}
}

学生

public class Student extends User {
private int userID;
private int studentID
private int classID

public int getUserID() {
    return userID;
}

public void setUserID(int userID) {
    this.userID = userID;
}

 public int getStudentID() {
    return studentID;
}

public void setStudentID(int studentID) {
    this.studentID = studentID;
}
public int getClassID() {
    return classID;
}

public void setClassID(int classID) {
    this.classID = classID;
}
}

JSP

        <c:forEach items="${students}" var="student">
            <tr>
                <td>${student.firstName} ${student.lastName}</td>
                <td>${student.email}</td>
                <td>${student.classID}</td>
            </tr>
        </c:forEach>

在我的控制器类中

List<Student> students = getStudents();
      output.addObject("students", students);

如何让它显示,user.firstName、user.lastName、user.email、student.classID

【问题讨论】:

  • 如果这真的适用于 classId,我会感到惊讶,因为您的 getter 与您在 JSP 中编写的内容不匹配:getClassId 映射到“classId”,而不是“classID”。您也应该提供 JSP 的完整列表,以便我们可以确保您在此处完成所有操作(并且可能修复中间损坏的 Student.java 列表)。
  • 我把它改成了classID
  • 这就是整个 JSP 吗?如果是这样,您需要导入“c”标签库。把它放在文件的顶部:java.sun.com/jsp/jstl/core" prefix="c" %>
  • 这不是我的整个 JSP。我尝试显示整个 JSP 文件,但它没有正确显示,因为它使用 HTML 来编辑我的文本。这是我添加列表的方法。列出 学生 = getStudents(); output.addObject("学生", 学生);

标签: java mysql spring jsp


【解决方案1】:

JSP 代码看起来不错。

如果值在 Student 对象中不可用并且应该是由于层次结构,则问题出在查询完成后填充 Student 对象的代码中。您可能想要验证 Student 对象是如何创建的,以及为什么未设置属于 User 对象的字段。

【讨论】:

  • 我仔细查看了学生对象的创建方式,您是正确的。我没有正确填充它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 2012-06-25
  • 2013-09-26
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多