2017-07-28 15 views
1

私は内部クラスの変数を使用する方法について質問します。JSP forEachを内部クラス用に使用

myneサーブレットでは、オブジェクトのリストと内部クラスが送信されます。

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

ここではforEachを使用します。

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

最後にTomcatは、内部クラスの最初のオブジェクトを取得し、それが見つからないまで行っています。

モデルのコード: あなたは2つの内部クラスがある見ることができるように、住所やグループ

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は、次の書き込み:

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) 

は、任意のアドバイス?おかげさまで

+1

非常に多くのメソッドと変数を使用して質問を投稿しました。あなたの質問をするために最小限の例を作るようにしてください。 - 読むのが簡単ならば、あなたの質問を読んで理解し、答えてくれるでしょう。 – MariusSiuram

答えて

0

ありがとうRUコミュニティ答えは - 内部クラスのゲッターとセッターを作成する必要があります。 uはそれをしない場合は、JSPページでは、uは、そのオブジェクトをエラーと言う与えるので

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

が見つからない

: そしてもう一つ、誰かが使用myneコードをする場合は、次のJSPページで変更する必要があります。

関連する問題