के साथ एक मल्टीमैप Iterate मैं बैकअप डैशबोर्ड लिखने की कोशिश कर रहा हूं एकाधिक सर्वर बैकअप की स्थिति दिखा रहा है। विचार जेएसपी के साथ एक टेबल दिखाना है जिसमें पंक्तियों में कॉलम और सर्वर नामों में पिछले कुछ दिन की तारीखें हैं। इस गरीब आदमी की तालिका में मैंने हां/नहीं मूल्य लिखा था।जेएसपी
+------------+------------+------------+------------+
+ Host Name | 2011-06-10 | 2011-06-09 | 2011-06-08 |
+------------+------------+------------+------------+
| web01 | Y | Y | N |
+------------+------------+------------+------------+
| web02 | Y | Y | Y |
+------------+------------+------------+------------+
प्रत्येक सर्वर, अपने स्वयं के बैकअप करता है और अमेज़न SimpleDb में स्थिति की बचत होती है और मैं एक जावा विधि लिखा निम्नलिखित हस्ताक्षर के साथ पिछले कुछ दिनों से इस जानकारी को पुन: प्राप्त करने:
/**
* 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);
मल्टीमैप है 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>
अब मैं अगर मैं एक बहुत जटिल वापसी मान के साथ और क्या मैं बजाय वापसी चाहिए पैर में खुद को शूटिंग कर रहा हूँ सोच रहा हूँ हैश मैप का एक सरल ऐरेलिस्ट जहां प्रत्येक हैश मैप में सभी आवश्यक जानकारी (दिनांक, होस्टनाम, संदेश) शामिल है। यदि आप सोचते हैं कि एक बेहतर दृष्टिकोण है तो मुझे डेटा निकालने वाली जावा विधि को फिर से लिखने में कोई समस्या नहीं है, लेकिन तत्व को प्राप्त करने के लिए अब प्रत्येक सेल को सभी ऐरेलिस्ट में लूप की आवश्यकता होगी (जो ठीक हो सकता है क्योंकि 7 सर्वर 6 दिन केवल 42 तत्व हैं)।
आप इस समस्या से कैसे संपर्क करेंगे?
+1। – Ray
यदि मैं चाबियों का उपयोग करता हूं जैसा मैंने कहा था + होस्टनाम (मुझे अंडरस्कोर की भी आवश्यकता नहीं है), तो मैं एक साधारण मानचित्र <स्ट्रिंग, स्ट्रिंग> के लिए नीचे जा सकता हूं और पहले से ही पर्याप्त है, और मुझे लूप की आवश्यकता नहीं है तत्व प्राप्त करने के लिए। तालिका भी दिलचस्प लगती है, लेकिन क्या इस पर काम करने के लिए जेएसपी करता है? अन्यथा यह जटिलता को जोड़ देगा, जबकि उद्देश्य जटिलता को कम कर देगा। – stivlo
मैं उपयोगी और विस्तृत स्पष्टीकरण के लिए आपका उत्तर स्वीकार करता हूं, हालांकि मैंने नीचे दिए गए मेरे समाधान का उपयोग करने का निर्णय लिया क्योंकि केवल एक हैश मैप होने के बजाय तीन स्तरों को पार करने के बजाय सरल है। आपके सहयोग के लिए धन्यवाद। – stivlo