2011-07-12 15 views
5

मैं कैसे जांच सकता हूं कि मैं एक विशिष्ट यूआरएल पर हूं या नहीं? मेरे पास कई लिंक वाले मेनू हैं और मैं वर्तमान पृष्ठ के लिए लिंक को अक्षम करना चाहता हूं। मैं उसे कैसे प्राप्त कर सकता हूं?जांचें कि अनुरोध पृष्ठ वर्तमान पृष्ठ के लिए है, ताकि मेनू लिंक सक्षम/अक्षम किया जा सके

उत्तर

4

पृष्ठ के वर्तमान URL प्राप्त करने के लिए, आप का उपयोग कर सकते हैं:

Relative Path: <%= request.getServletPath() %> 

आप विस्तार से बता सकते हैं आप कैसे कुछ लिंक को अक्षम करना चाहते हैं?

+0

कोई तरीका नहीं है जो वर्तमान पृष्ठ से सापेक्ष पथ लौटाता है? यूआरएल पैरामीटर को छोड़कर। – Victor

+0

ने उत्तर को अपडेट किया। कृपया देखें कि यह आपके मामले में फिट बैठता है या नहीं। – Raptor

17

आप यूआरआई अनुरोध प्राप्त करने के लिए HttpServletRequest#getRequestURI() का उपयोग कर सकते हैं। getServletPath() जैसा कि अन्य उत्तर द्वारा सुझाया गया है, यह सहायक रूप से सहायक नहीं है क्योंकि यह सर्वलेट पथ (जेएसपी/सर्वलेट यूआरएल पैटर्न में मिलान करने वाला हिस्सा) का प्रतिनिधित्व करता है, अनुरोध यूआरआई नहीं है (जैसे एंड्रयूज़र ब्राउजर एड्रेस बार में देखता है)। यदि जेएसपी को कुछ फ्रंट कंट्रोलर सर्वलेट द्वारा अग्रेषित किया गया था, तो आपको ब्राउजर एड्रेस बार में वर्चुअल पथ की बजाय जेएसपी का अपना रास्ता मिल जाएगा।

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
... 
<ul id="menu"> 
    <c:forEach items="${menu}" var="page"> 
     <c:set var="active" value="${fn:endsWith(pageContext.request.requestURI, page.url)}" /> 
     <li class="${active ? 'active' : 'none'}"><a href="${page.url}">${page.name}</a></li> 
    </c:forEach> 
</ul> 

फिर आप को परिभाषित कर सकते हैं:

मान लें कि आप एक मेनू जो आवेदन गुंजाइश जहां Page वर्ग url और name गुण है में एक List<Page> का प्रतिनिधित्व करती है है, इसलिए यहाँ JSTL की मदद से एक उदाहरण है किकऑफ़ मेनू आइटम शैली .active कक्षा द्वारा। जैसे इसे एक काला रंग, कुछ हाइलाइटिंग पृष्ठभूमि, आदि

ul#menu li { 
    background: white; 
} 

ul#menu li.active { 
    background: pink; 
}