ऐसा लगता है कि यह प्रश्न टम्बलवेड्स देख रहा है। मैंने समस्या को बहुत कुछ दिया है, लेकिन मुझे कोई व्यवहार्य समाधान नहीं मिला है, इसलिए मुझे लगता है कि मैं अपने विचार के कार्यान्वयन को लिखूंगा, मैं इसे आपकी टिप्पणियों के लिए पोस्ट कर रहा हूं, मुझे बताएं कि क्या आपको लगता है कि यह * * टी विचार, अगर आपको लगता है कि यह योग्य है, तो मैं परिणाम कोड पोस्ट करूंगा।
सबसे पहले, मैं इसे सरल अनुरोध-कम सर्वलेट के साथ हल करने की योजना बना रहा हूं जो एक्सएमएल मेनू फ़ाइल संसाधन लोड करता है (प्रारंभ में केवल एक, लेकिन बाद में अधिक समर्थन करता है)। एक मेनू में useBean
मेनू लोड हो सकते हैं और उपयोगकर्ता द्वारा चाहने वाले किसी भी तरीके से प्रस्तुत किए जा सकते हैं, डिफ़ॉल्ट लक्ष्य एक साधारण असाधारण सूची है, जो काफी आम है।
तो सबसे पहले, मेरा मेनू निम्न जैसा दिख सकता है, इसे सुरक्षा भूमिकाओं के लिए प्रावधान मिला है, लेकिन यह दो संस्करण SimpleMenuServlet
और SpringSecurityMenuServlet
या कुछ समान बनाकर "अतिरिक्त जोड़ा गया" के रूप में कुछ हो सकता है।
<menus>
<menu id='home' path='/home'>
<paths>
<match pattern='/home'/>
</paths>
</menu>
<menu id='administration' path='/admin'>
<allowed-roles>
<role name='admin'/>
</allowed-roles>
<paths>
<match pattern='/admin/**'/>
</paths>
</menu>
<menu id='reports' path='/reports'>
<allowed-roles>
<role name='user'/>
<role name='admin'/>
</allowed-roles>
<paths>
<match pattern='/reports/**'/>
<match pattern='/item/*/reports/**'/>
</paths>
<menu>
</menus>
नोट: वहाँ मेनू के रूप में इस संसाधन बंडलों से लौटाया जा करने का इरादा है पर कोई "पाठ" attibute है।
रेंडरिंग अब सर्वलेट से useBean
के साथ या कस्टम टैग लाइब्रेरी के माध्यम से किया जा सकता है, जो मुझे नहीं लगता कि वास्तव में आवश्यक है, लेकिन कौन जानता है।
<ul id="main-menu">
<c:forEach var="item" items="${menu-items}">
<c:choose>
<c:when test="${item.selected && !found}">
<c:set var="menuClass" value="selected"/>
<c:set var="found" value="selected"/>
</c:when>
<c:otherwise>
<c:set var="menuClass" value=""/>
</c:otherwise>
</c:choose>
<li id="${item.id}" class="${menuClass}">
<!-- Using resource bundle to get text, this could be the
servlet/menu item that's responsible to get this instead -->
<a href="${item.path}"><fmt:message key="menu-${item.id}" /></a>
</li>
</c:forEach>
</ul>
तो अब मेरे तर्क है कि मैं सर्वलेट और मेनू सेम, ऊपर जार सकता है लोड हो रहा है मेनू फ़ाइलों को web.xml
के माध्यम से इसे नियंत्रित सम्मान के साथ और स्टार्टअप आदि, तो किसी भी दृश्य से प्रस्तुत करना है।
जैसा कि आप देख सकते हैं कि मेन्यू का कोर पथ पैटर्न द्वारा काम करता है यह निर्धारित करता है कि आप किस क्षेत्र में हैं, यह चेहरे की तरह लिंकिंग पेज को संभाल नहीं पाता है, लेकिन यह वही नहीं है जो मैं चाहता हूं, मैं देख रहा हूं एक स्थैतिक, विन्यास योग्य, रखरखाव मेनू, कि न तो मेरे विचार और न ही मेरे नियंत्रकों के पास ज्ञान का एक बड़ा सौदा होना चाहिए।
यह एक अच्छा समाधान ejmarino है, धन्यवाद। मैं पहले से ही टाइल्स का उपयोग कर रहा हूं इसलिए यह करना बहुत आसान था। इसका मतलब यह है कि मेरे menu.jsp में मुझे यह निर्धारित करने के लिए बहुत सारे ' ' ब्लॉक रखना होगा कि कक्षा को 'ली' पर लागू किया जाना चाहिए, हालांकि इसे जावास्क्रिप्ट के एक छोटे टुकड़े के साथ सरलीकृत किया जा सकता है। फिर से धन्यवाद, महान जवाब। –