我有一个从 servlet 传递到 jsp 的对象列表,如下所示:
List<LifeEvent> lifeEvents = null;
if (initialDate.equals(finalDate))
lifeEvents = ontAccess.getPhotosOfTheDay(initialDate,null);
else
lifeEvents = ontAccess.getPhotosOfTheDay(initialDate,finalDate);
request.setAttribute("lifeEvents", lifeEvents);
LifeEvent 类具有以下全局变量:
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;
@OneToOne(optional = true, cascade = {CascadeType.ALL})
@JoinColumn
private IDContainer idContainer;
@ManyToOne(optional = true, cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE})
private Place place;
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE}, fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
private List<Comment> comments;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE}, fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@JoinTable(name = "lifeevent_withFriends")
private List<Friend> withFriends;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE}, fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@JoinTable(name = "lifeevent_likedBy")
private List<Friend> likedBy;
private String text;
private boolean highlyRelevant = false;
@ManyToOne(optional=true, cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE})
@JoinColumn
private MediaObject mediaObject;
private boolean archived=false;
例如,地点对象具有以下全局变量:
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;
@OneToOne(optional = true, cascade = {CascadeType.ALL})
@JoinColumn
protected IDContainer idContainer;
private boolean isPublic;
private String placeName;
@ManyToOne
private MediaObject media;
@ManyToOne(optional = true, cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE})
private Location location;
private boolean archived=false;
在 .jsp 页面中,我想显示有关 LifeEvent 的信息,例如,我希望访问 LifeEvent 类内的 Place 内的地名。我怎样才能访问它?
只是 ${lifeEvent.place.placeName} 吗?
最佳答案
零是一个完美的数字。不要将 List
初始化为 null
。将其初始化为空列表。 isPublic
对于 boolean 值来说不是一个好名字。
由于您已将 lifeEvents
设置为请求属性,因此您可以使用 JSTL c:forEach
JSP 标记来迭代列表:
<table>
<thead>
<tr>
<th>Place Name</th>
<th>Public</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="2">${fn:length(lifeEvents)} Events</th>
</tr>
</tfoot>
<tbody>
<c:forEach items="${lifeEvents}" var="event">
<tr>
<td>${event.place.placeName}</td>
<td>${event.place.isPublic}</td>
</tr>
</c:forEach>
</tbody>
</table>
当然,您需要导入 JSTL 核心标记库。
关于java - 如何访问从 servlet 传递的 .jsp 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21710363/