我正在嘗試編寫一個備份儀表板,顯示多個服務器備份的狀態。這個想法是顯示一個JSP表,其中最後幾天的日期在列中,而服務器名稱在行中。在這個窮人的桌子上,我寫了Yes/No values。使用JSP迭代Multimap
+------------+------------+------------+------------+
+ Host Name | 2011-06-10 | 2011-06-09 | 2011-06-08 |
+------------+------------+------------+------------+
| web01 | Y | Y | N |
+------------+------------+------------+------------+
| web02 | Y | Y | Y |
+------------+------------+------------+------------+
每個服務器,做自己的備份和保存狀態到亞馬遜的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之爲Google Guava Multimap,因爲我每天有多個備份。輸出示例:
{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>
現在我想,如果我拍攝自己的腳了過於複雜的返回值是否我應該回報,而不是一個簡單的HashMap ArrayList,其中每個HashMap都包含所有需要的信息(日期,主機名,消息)。如果你們認爲這是一個更好的方法,我沒有任何問題來重寫提取數據的Java方法,但是每個單元現在需要遍歷所有ArrayList以獲取元素(這可能是正確的,因爲6個服務器減少了7個天只有42個元素)。
你會如何解決這個問題?
用於使用表格來表示表格。 – Ray 2011-06-10 11:05:24
如果我按照我所說的日期+主機名(我甚至不需要下劃線)使用這些鍵,我可以下載一個簡單的Map並且已經足夠了,而且我不需要循環獲取元素。表看起來也很有趣,但是JSP forEach是否可以使用它?否則會增加複雜性,而目的是降低複雜性。 –
stivlo
2011-06-10 11:49:43
我接受你的回答,提供有用的和詳細的解釋,儘管我決定使用我的解決方案解釋如下,因爲只有一個HashMap比較簡單,而不必遍歷三個層次。感謝您的幫助。 – stivlo 2011-06-25 11:28:58