2014-11-04 2 views
1

У меня есть два класса сущностей, которые представляют две таблицы в моей базе данных. Две таблицы - это Пользователь и Студент. Класс Student (userID, studentID, classID) наследуется от класса User (id, firstName, lastName, email). Когда я запрашиваю базу данных для студентов, у меня есть список. Затем я хочу использовать этот список для итерации и отображения firstName, lastName, email и classID для каждого учащегося. Однако он отображает только идентификатор classID. Я считаю, что это потому, что объект имеет Student, который содержит только три поля (userID, studentID, classID) и не содержит имен и электронной почты. Однако, поскольку класс Student расширяет класс User, я думал, что он все равно сможет получить другие поля.JSP Iterate над пользовательским классом, который наследует

Вот мои классы

пользователя

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

+0

Я был бы удивлен, если это действительно работает для classId, так как ваш геттер не соответствует тому, что вы написали в JSP: getClassId карты для «classId», а не «classID». Вы должны установить полный список для JSP, чтобы мы могли убедиться, что вы сделали все прямо там (и, возможно, исправьте список Student.java, который разбит посередине). –

+0

Я изменил его на classID –

+0

Разве что весь JSP? Если это так, вам нужно импортировать тег tag. Поместите это в верхнюю часть файла: <% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> –

ответ

1

код JSP кажется, хорошо.

Если значения не доступны в объекте Student и должны быть из-за иерархии, проблема заключается в коде, который заполняет объекты Student после выполнения запроса. Возможно, вам захочется проверить, как создается объект Student и почему поля, принадлежащие объекту User, не заданы.

+0

Я посмотрел, как создается объект-ученик, и вы были правы. Я не заполнял его правильно. –

Смежные вопросы