2017-07-28 6 views
1

Ich habe eine Frage, wie man Variablen der inneren Klassen verwendet.JSP mit forEach für innere Klassen

In myne Servlet sende ich Liste von Objekten und dort innere Klasse.

request.setAttribute("users", dao.getAllUsersandAdress()); 
    RequestDispatcher view = request.getRequestDispatcher(forward); 
    view.forward(request, response); 

schicken JSP Wo i forEach verwenden.

<c:forEach items="${users}" var="user"> 
    <tr> 
     <td><c:out value="${user.idUser}" /></td> 
     <td><c:out value="${user.firstName}" /></td> 
     <td><c:out value="${user.lastName}" /></td> 
     <td><c:out value="${user.loginName}" /></td> 
     <td><c:out value="${user.email}" /></td> 
     <td><fmt:formatDate pattern="yyyy-MMM-dd" value="${user.birthday}" /></td> 
     <td><c:out value="${user.isActive}" /></td> 
     <td><c:out value="${user.isAdmin}" /></td> 
     <td><fmt:formatDate pattern="yyyy-MMM-dd" value="${user.createdTimeStamp}" /></td> 
     <td><fmt:formatDate pattern="yyyy-MMM-dd" value="${user.lastupdateTimeStamp}" /></td> 
     <td><c:out value="${user.adressClass.zip}" /></td> 
     <td><c:out value="${user.adressClass.Country}" /></td> 
     <td><c:out value="${user.adressClass.City}" /></td> 
     <td><c:out value="${user.adressClass.District}" /></td> 
     <td><c:out value="${user.adressClass.Street}" /></td> 

     <td><a href="UserController?action=edit&userId=<c:out value="${user.idUser}"/>">Update</a></td> 
     <td><a href="UserController?action=delete&userId=<c:out value="${user.idUser}"/>">Delete</a></td> 
    </tr> 
</c:forEach> 

Am Ende gehen Tomcat, bis er erstes Objekt der inneren Klasse bekommen und das ist nicht finden sprechen.

-Code des Modells: Wie Sie gibt es zwei innere Klassen sehen können, Adresse und Gruppen

public class User { 

private int idUser; 
private String 
     firstName, 
     lastName, 
     loginName, 
     password, 
     email; 
private Date 
     birthday, 
     createdTimeStamp; 
private Timestamp 
     lastupdateTimeStamp; 
private boolean 
     isActive, 
     isAdmin; 

public Adress adressClass; 
public Group groupClass; 

public User() { 
    adressClass = new Adress(); 
    groupClass = new Group(); 
} 

public int getIdUser() { 
    return idUser; 
} 

public void setIdUser(int idAdress) { 
    this.idUser = idAdress; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

public Date getBirthday() { 
    return birthday; 
} 

public void setBirthday(Date birthday) { 
    this.birthday = birthday; 
} 

public boolean isActive() { 
    return isActive; 
} 

public void setActive(boolean active) { 
    isActive = active; 
} 

public boolean isAdmin() { 
    return isAdmin; 
} 

public void setAdmin(boolean admin) { 
    isAdmin = admin; 
} 

public Date getCreatedTimeStamp() { 
    return createdTimeStamp; 
} 

public void setCreatedTimeStamp(Date createdTimeStamp) { 
    this.createdTimeStamp = createdTimeStamp; 
} 

public Date getLastupdateTimeStamp() { 
    return lastupdateTimeStamp; 
} 

public void setLastupdateTimeStamp(Timestamp lastupdateTimeStamp) { 
    this.lastupdateTimeStamp = lastupdateTimeStamp; 
} 


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 getLoginName() { 
    return loginName; 
} 

public void setLoginName(String loginName) { 
    this.loginName = loginName; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 
@Override 
public String toString() { 
    return "User [idUser=" + idUser + ", firstName=" + firstName 
      +", loginName="+ loginName 
      +", LastName=" + lastName + ", birthday=" + birthday + ", email=" 
      + email +",Adress country "+adressClass.country +"]"; 
} 

public class Adress{ 
    private int 
      idAdress, 
      zip; 
    private String 
      country, 
      city, 
      district, 
      street; 

    public int getIdAdress() { 
     return idAdress; 
    } 

    public void setIdAdress(int idAdress) { 
     this.idAdress = idAdress; 
    } 

    public int getZip() { 
     return zip; 
    } 

    public void setZip(int zip) { 
     this.zip = zip; 
    } 

    public String getCountry() { 
     return country; 
    } 

    public void setCountry(String country) { 
     this.country = country; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    public String getDistrict() { 
     return district; 
    } 

    public void setDistrict(String district) { 
     this.district = district; 
    } 

    public String getStreet() { 
     return street; 
    } 

    public void setStreet(String street) { 
     this.street = street; 
    } 
} 

public class Group{ 
    private int idGroup; 
    private String role; 

    public int getIdGroup() { 
     return idGroup; 
    } 

    public void setIdGroup(int idGroup) { 
     this.idGroup = idGroup; 
    } 

    public String getRole() { 
     return role; 
    } 

    public void setRole(String role) { 
     this.role = role; 
    } 
} 

}

Tomcat schreiben weiter:

HTTP Status 500 - An exception occurred processing JSP page /index.jsp at line 9 
    javax.el.PropertyNotFoundException: Property 'adressClass' not found on type model.User 
javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:291) 

Alle berät? Danke.

+1

Sie haben eine Frage mit einer Menge Methoden und Variablen geschrieben. Bitte versuchen Sie ein minimales Beispiel zu geben, um Ihre Frage zu stellen - es wird wahrscheinlicher für Leute, Ihre Frage zu lesen, zu verstehen und zu beantworten, wenn es einfacher zu lesen ist :) – MariusSiuram

Antwort

0

Vielen Dank RU Community stackoverflow. Antwort ist - Need erstellen Getter und Setter für innere Klassen. Und noch eine Sache, wenn jemand Gebrauch myne Code sein wird, gibt es in JSP-Seite neben ändern müssen: Weil

<td><c:out value="${user.adressClass.zip}" /></td> 
    <td><c:out value="${user.adressClass.Country}(Country on country)" /></td> 
    <td><c:out value="${user.adressClass.City(city)}" /></td> 
    <td><c:out value="${user.adressClass.District(district)}" /></td> 
    <td><c:out value="${user.adressClass.Street(street)}" /></td> 

, wenn u es nicht tun, JSP-Seite geben u Fehler und das Objekt sagt nicht gefunden .