2010-07-15 19 views
54

जाओ (प्रबंधित बीन, वेल्ड बीन, कोई फर्क नहीं पड़ता), मैं यह मैं पथ देताप्रोग्राम के रूप में वर्तमान पृष्ठ

FacesContext ctx = FacesContext.getCurrentInstance(); 
String path = ctx.getExternalContext().getRequestContextPath(); 

फोन करके संदर्भ पथ क्लाइंट पर है प्राप्त कर सकते हैं क्लाइंट वर्तमान में /myapplication की तरह पहुंचता है। क्या पृष्ठ, जैसे /home.faces, और कैसे प्राप्त करना संभव है?

उत्तर

102

आप आम तौर पर इस बात के लिए UIViewRoot#getViewId() का उपयोग करना चाहते हैं।

String viewId = facesContext.getViewRoot().getViewId(); 

यह इस प्रकार भी उपलब्ध ईएल में है:

#{view.viewId} 

वास्तव में यह मान नेविगेशन मामले में reuseable जैसे <h:link outcome> और <h:button outcome> परिणाम है।


वैकल्पिक रूप से, आप भी HttpServletRequest#getRequestURI() का उपयोग जो कुछ enduser वास्तव में ब्राउज़र पता पट्टी में देख रही है पाने के लिए कर सकते हैं।

String uri = ((HttpServletRequest) externalContext.getRequest()).getRequestURI(); 

कौन सा भी उपलब्ध इस प्रकार ईएल में है:

#{request.requestURI} 

वास्तव में यह मान <h:outputLink value> या सादे <a href> में reuseable है। ध्यान दें कि आप इसे नेविगेशन केस परिणाम के रूप में उपयोग नहीं कर सकते हैं।

+1

यह मज़बूती से काम नहीं करता। उदाहरण के लिए प्रीटीफेस के साथ यह यूआरएल नहीं देता है जिसे वर्तमान पेज बनाने के लिए बुलाया गया था। – DoubleMalt

+1

@DoubleMalt: OP ने इंगित नहीं किया कि वह PrettyFaces का उपयोग कर रहा है। – BalusC

+4

हालांकि यह सच है, उन्होंने स्पष्ट रूप से यह भी नहीं बताया कि उन्होंने नहीं किया था। मेरा मुद्दा यह था कि जेएसएफ का विस्तार करने वाले पुस्तकालय आपके समाधान को तोड़ सकते हैं (और प्रीटीफेस एक बहुत ही सामान्य वृद्धि है क्योंकि मानक कार्यान्वयन के नेविगेशन के हैंडलिंग बहुत बेकार है)। मैं सिर्फ उन लोगों को देना चाहता था जो पता लगाते हैं कि आपका साफ समाधान उनके लिए एक सुराग क्यों नहीं काम करता है। – DoubleMalt

12

ठीक, हो गया है, यह

FacesContext ctx = FacesContext.getCurrentInstance(); 
HttpServletRequest servletRequest = (HttpServletRequest) ctx.getExternalContext().getRequest(); 
// returns something like "/myapplication/home.faces" 
String fullURI = servletRequest.getRequestURI(); 
2
String uri = ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getRequestURI(); 
1
String str = ((HttpServletRequest) FacesContext.getCurrentInstance() 
.getExternalContext().getRequest()).getRequestURI(); 
System.out.println(str); 
+2

कृपया शब्दों में भी अपने उत्तर की व्याख्या करें। –

+0

यह पिछले उत्तरों में कुछ भी नहीं जोड़ता है। – Robert

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