访问 JSP 视图中的嵌套对象

Accessing nested objects in JSP View

我有一个对象列表。该对象具有以下 class:

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

我似乎无法弄清楚问题出在哪里。

您应该使用 JavaBean 样式 属性:

而不是调用方法 getId()
<c:out value="${listvalue.id}"/>

它应该可以工作,因为 EL(表达式语言)使用 JavaBeans 规范。根据本规范,listvalue 是一个 Java bean,id 是一个 属性,它由 getter 方法读取 getId().

另请参阅: EL Wiki