#hibernate #list #jsp #arraylist
#спящий режим #Список #jsp #arraylist
Вопрос:
Я получаю список пользователей, следуя
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:
Просто поместите необходимую информацию в область запроса. Для действий пользователя проще всего иметь a Map<Long, UserActivity> userActivities
с идентификатором пользователя в качестве ключа. Затем вы можете получить к нему доступ в EL с помощью ${userActivities[user.id]}
.
Например.
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
)