如何在另一个Object中添加对象的字段以在jsp中显示它

时间:2011-10-01 05:08:03

标签: hibernate list jsp arraylist

我按照

获取UserList
List<User> UserList=usersService.findUsers();

而不是迭代此列表并基于id获取另一个对象UserActivity,并希望UserActivity对象的字段为LastSeen_time。

 Iterator<User> iterator = UserList.iterator();
         while(iterator.hasNext()){
                 User user= iterator.next() ;
                 System.out.println("userA"+user.getId());
                 UserActivity userActivity  =  userActivityService.findUser(user.getId());
                 System.out.println("userActivity"+userActivity.getLastSeen_time());


         }

现在我想将User和UserActivity.LastSeen_time传递给jsp页面,我将在其中显示为

User.name User.id UserActivity.LastSeen_Time(corresponding time for each id)

我该怎么做,请建议

1 个答案:

答案 0 :(得分:0)

只需将必要的信息放在请求范围内即可。对于用户活动,最简单的方法是将Map<Long, UserActivity> userActivities作为密钥用户ID。然后,您可以使用${userActivities[user.id]}在EL中访问它。

E.g。

List<User> users = userService.list();
Map<Long, UserActivity> userActivities = new HashMap<Long, UserActivity>();

for (User user : users) {
    userActivities.put(user.getId(), userActivityService.findByUser(user));
}

request.setAttribute("users", users);
request.setAttribute("userActivities", userActivities);

然后在JSP

<table>
  <tr>
    <th>User name</th>
    <th>User ID</th>
    <th>Last seen time</th>
  </tr>
  <c:forEach items="${users}" var="user">
    <tr>
      <td><c:out value="${user.name}" /></td>
      <td>${user.id}</td>
      <td><fmt:formatDate value="${userActivities[user.id].lastSeen}" pattern="yyyy-MM-dd HH:mm:ss" /></td>
    </tr>
  </c:forEach>
</table>

(我假设getLastSeen()返回Date