Как добавить поле объекта в другой объект, чтобы отобразить его в jsp

#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 )