2016-11-12 4 views
1

Ich habe eine Liste von Objekten. Das Objekt ist von der folgenden Klasse:Zugriff auf verschachtelte Objekte in der JSP-Ansicht

@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; 
    } 





} 

In meiner Controller-Methode füge ich diese Liste an das Modell als:

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

In meinem JSP Ich bin nicht in der Lage der Listen Methoden Getter zuzugreifen. Ich muss auf die getId und getFirstName getters zugreifen. Dies ist mein 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> 

ich die folgende Fehlermeldung erhalten:

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

Linie 33:

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

ich nicht scheinen, um herauszufinden, was das Problem ist.

Antwort

1

Stattdessen Methode der Aufruf getId() Sie JavaBean Stil Eigenschaft verwenden sollten:

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

Es sollte funktionieren, weil EL (Expression Language) Java Beans-Spezifikation verwendet. In Bezug auf diese Spezifikation listvalue ist eine Java-Bean und id ist eine Eigenschaft, die von Getter-Methode getId() gelesen wird. auch

Siehe:EL Wiki

+1

Haben Sie etwas dagegen zu erklären Ihre Antwort? –

+0

JSP Expression Language verwendet die JavaBeans-Spezifikation. In Bezug auf diese Spezifikation ist 'listvalue' eine Java-Bean und' id' ist eine Eigenschaft, die von der Getter-Methode getId() gelesen wird. – Oleksandr

+0

Ich denke, das sollte das Problem lösen. –

Verwandte Themen