JSP использование forEach для вложенных классов

335
30 июля 2017, 08:07

Всем привет. Возник вопрос в том как использовать значения внутренних классов.

В своём сервлете я передаю список объектов, у которых внутри уже инициализированы параметры.

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

Передал в JSP страницу

    <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>

По итогу он проходится до первого объекта внутреннего класса и говорит что не нашёл.

Подскажите как быть ?

Дополняю: Код модели 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;
    }
}

}

Томкат пишет следующее:

    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)
READ ALSO
JAVA лицензионное соглашение

JAVA лицензионное соглашение

Как можно предложить пользователю принять лицензионное соглашение, до запуска программы?

307
Условия с активностью jtextfield

Условия с активностью jtextfield

Есть два jtextfield и один jbutton

270
По завершению теста Jenkins выводит ошибки

По завершению теста Jenkins выводит ошибки

В чем проблема? Почему по завершению теста, Jenkins выводит следующие ошибки?

306
Метод валидации

Метод валидации

На вход подаётся адрес, к примеру http://robota245com Надо проверить его на валидность

234