【问题标题】:Accessing nested objects in JSP View在 JSP 视图中访问嵌套对象
【发布时间】:2016-11-12 22:48:09
【问题描述】:

我有一个对象列表。该对象属于以下类别:

@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 getter。 这是我的 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>

我似乎无法弄清楚问题所在。

【问题讨论】:

    标签: java spring jsp spring-mvc el


    【解决方案1】:

    您应该使用 JavaBean 样式属性,而不是调用方法 getId()

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

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

    另请参阅: EL Wiki

    【讨论】:

    • JSP 表达式语言使用 JavaBeans 规范。在本规范中,listvalue 是一个 Java bean,id 是一个由 getter 方法 getId() 读取的属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多