访问 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
我有一个对象列表。该对象具有以下 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