2011-05-08 11 views
6

के साथ नेविगेशन लिंक के साथ एक मेनू बनाना क्या जेएसटीएल का उपयोग कर नेविगेशन लिंक के साथ मेनू बनाने का पुस्तकालय या सर्वोत्तम अभ्यास तरीका है?जेएसटीएल

मेरे पास 5 पृष्ठ हैं जो प्रत्येक पृष्ठ पर जाते हैं। मैं वह लिंक चाहता हूं जो वर्तमान पृष्ठ को इंगित करता है कि "अक्षम" हो। मैं इसे मैन्युअल रूप से कर सकता हूं लेकिन यह एक समस्या होनी चाहिए जिसे लोगों ने पहले ही निपटाया है। अगर कोई टैगलिब है जो इसे संभालता है तो मुझे आश्चर्य नहीं होगा लेकिन मुझे इसकी जानकारी नहीं है।

उत्तर

8

आप जेएसटीएल/ईएल को अनुरोधित जेएसपी पेज के यूआरएल पर सशर्त रूप से HTML/CSS उत्पन्न कर सकते हैं। आप इसे ईएल में ${pageContext.request.servletPath} द्वारा प्राप्त कर सकते हैं। यह मानते हुए कि आप आवेदन दायरे में कुछ Map<String, String> में लिंक है:

<ul id="menu"> 
    <c:forEach items="${menu}" var="item"> 
     <li> 
      <c:choose> 
       <c:when test="${pageContext.request.servletPath == item.value}"> 
        <b>${item.key}</b> 
       </c:when> 
       <c:otherwise> 
        <a href="${item.value}">${item.key}</a> 
       </c:otherwise> 
      </c:choose> 
     </li> 
    </c:forEach> 
</ul> 

या जब आप बस एक CSS वर्ग

<ul id="menu"> 
    <c:forEach items="${menu}" var="item"> 
     <li><a href="${item.value}" class="${pageContext.request.servletPath == item.value ? 'active' : 'none'}">${item.key}</a></li> 
    </c:forEach> 
</ul> 

के बाद कर रहे हैं आप <jsp:include> उपयोग कर सकते हैं JSP पृष्ठों में सामग्री का पुन: उपयोग करने के लिए। अपनी ही menu.jsp फ़ाइल में ऊपर रखो और इसे शामिल इस प्रकार है:

<jsp:include page="/WEB-INF/menu.jsp" /> 

पेज WEB-INF फ़ोल्डर में रखा गया है सीधी पहुँच को रोकने के लिए।

+0

सुंदर। क्या आपको jstl के साथ उस सूची को बनाने के लिए कोई सुझाव होगा? मैं इसे एक स्क्रिप्टलेट या नियंत्रक परत में नहीं बनाना पसंद करूंगा। –

+2

यदि यह एप्लिकेशन है, तो मैं केवल 'ServletContextListener' का उपयोग करूंगा। 'ContextInitialized()' में, मेनू को 'event.getServletContext() द्वारा सेट और स्टोर करें। SetAttribute ("मेनू", मेनू) '। यह ईएल में सामान्य तरीके से उपलब्ध होगा। उदाहरण के लिए यह उत्तर भी देखें http://stackoverflow.com/questions/3468150/using-init-servlet/3468317#3468317 – BalusC

संबंधित मुद्दे