Итерация Multimap с JSP

Я пытаюсь написать панель управления резервным копированием , показывающую состояние резервного копирования нескольких серверов. Идея состоит в том, чтобы показать таблицу с JSP, в столбцах которой указаны даты последних дней, а в строках - имена серверов. В таблице этого бедняка я написал значения Да / Нет.

+------------+------------+------------+------------+
+ Host Name  | 2011-06-10 | 2011-06-09 | 2011-06-08 |
+------------+------------+------------+------------+
| web01      |     Y      |      Y     |     N      |
+------------+------------+------------+------------+
| web02      |     Y      |      Y     |     Y      |
+------------+------------+------------+------------+

Каждый сервер делает свое собственное резервное копирование и сохраняет статус в Amazon SimpleDb, и я написал метод Java для получения этой информации за последние несколько дней со следующей подписью:

/**
 * List MySQL backups of the last howManyDays days. It starts from today 
 * included at index 0 and goes back in the past until we have a list of 
 * howManyDays days, even if some day doesn't have any data. Return a list of 
 * dates, each of which contains a list of backup jobs executed by servers in 
 * that day.
 * 
 * @param howManyDays
 *         how many days of backup to show
 * @return a Map where each key is the date in ISO format (2011-06-10) and each
 *         element is a backupJob which is represented by a Map where the key is 
 *         the server name (ex. web01, web01) and the value is "Y" if all was 
 *         fine, otherwise it contains the error message.
 */
public Multimap<String, Map<String, String>> listMysqlBackups(int howManyDays);

Multimap - это Multimap Google Guava, потому что у меня есть несколько резервных копий в день. Пример вывода:

{2011-06-10=[{web06=Y}, {web05=Y}], 2011-06-08=[{web05=Y}, {web06=Y}], 
 2011-06-09=[{web05=Y}, {web06=Y}], 2011-06-07=[{web05=Y}, {web06=Y}]} 

Я не знаю, как использовать эту информацию в JSP. Я пробовал с foreach:

<c:forEach items="${backups}" var="backup" varStatus="backupId">
    ${backup.key}
</c:forEach>

И ответ был:

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know 
how to iterate over supplied "items" in <forEach>

Теперь я думаю, если я стреляю себе в ногу со слишком сложным возвращаемым значением, и должен ли я вместо этого возвращать простой ArrayList из HashMap, где каждый HashMap содержит всю необходимую информацию (дату, имя хоста, сообщение). Если вы, ребята, думаете, что это лучший подход, у меня нет проблем с переписыванием метода Java, извлекающего данные, но для каждой ячейки теперь потребуется цикл по всему ArrayList, чтобы получить элемент (что может быть нормально, потому что 6 серверов на 7 дней всего 42 элемента)

Как бы вы подошли к этой проблеме?

5
задан BalusC 10 June 2011 в 11:48
поделиться