2016-11-12 25 views
1

我有一個對象列表。目的是以下類的:訪問JSP視圖中的嵌套對象

@Entity 
@Table(name="User") 
public class User { 
    @Id 
    @Column(name = "userid" ,unique=true, nullable=false) 
    private String id; 
    @Column(name="firstname") 
    private String firstname; 
    @Column(name="lastname") 
    private String lastname; 
    @Column(name="title") 
    private String title; 
    @Embedded 
    private Address address; 
    @ManyToMany 
    @JoinTable(name="phone_user", joinColumns={@JoinColumn(name="userid")}, 
    inverseJoinColumns={@JoinColumn(name="phoneid")}) 
    private List<Phone> phones; 

    public String getId() { 
     return id; 
    } 
    public void setId(String 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 getTitle() { 
     return title; 
    } 
    public void setTitle(String title) { 
     this.title = title; 
    } 

    public Address getAddress() { 
     return address; 
    } 
    public void setAddress(Address address) { 
     this.address = address; 
    } 

    public List<Phone> getPhones() { 
     return phones; 
    } 
    public void setPhones(List<Phone> phones) { 
     this.phones = phones; 
    } 





} 

在我的控制器方法我這個列表添加到模型:

model.addAttribute("lists",phone.getUsers()); 

在我的JSP我無法訪問列表getter方法。我需要訪問getId和getFirstName getters。 這是我的JSP:

<c:forEach items="${lists}" var="listvalue"> 
    <tr> 
     <td>Employee ID: <c:out value="${listvalue}"/></td> 
     <td>Employee Pass: <c:out value="${listvalue.getId()}"/></td> 
    </tr> 
</c:forEach> 

我得到以下錯誤:

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/phoneview.jsp at line 33 

線33:

<td>Employee Pass: <c:out value="${listvalue.getId()}"/></td> 

我似乎無法找出問題所在。

回答

1

,而不是調用方法getId()你應該使用JavaBean風格的屬性:

<c:out value="${listvalue.id}"/> 

它應該工作,因爲EL(表達式語言)使用JavaBeans規範。就本規範而言,listvalue是一個Java bean,id是通過getter方法getId()讀取的屬性。

參見:EL Wiki

+1

你介意解釋你的答案? –

+0

JSP表達式語言使用JavaBeans規範。在本規範中,'listvalue'是一個Java bean,'id'是一個getter方法getId()讀取的屬性。 – Oleksandr

+0

我認爲這應該可以解決問題。 –