2012-01-06 14 views
12

में नियंत्रक के अंदर यूआरआई कैसे उत्पन्न करें मैं वसंत 3.0 का उपयोग करता हूं और मेरे पास वास्तव में एक सरल सवाल है लेकिन इंटरनेट पर कोई जवाब नहीं मिला। मैं अपने जेएसपी में एक पथ (एक यूआरआई) उत्पन्न करना चाहता हूं:वसंत 3

<spring:url value="/my/url" /> 

लेकिन नियंत्रक के अंदर। उपयोग करने के लिए संबंधित सेवा क्या है? धन्यवाद!

संपादित करें: यह इससे संबंधित हो सकता है: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/resources.html#resources-resourceloader? क्या इसके लिए कोई बेहतर समाधान नहीं है?

उत्तर

2

मैं कहूंगा कि

request.getRequestURL() + "/my/url" 

काम में आता है। कोई ऐसी कार्यक्षमता में बनाया, वसंत है: यूआरएल UrlTag.class नीचे दी गई विधि यूआरएल उत्पन्न करने के लिए है कि कहता है, आप अपने कोड के लिए एक insőiration के रूप में उपयोग कर सकते हैं: MVC 3,1

private String createUrl() throws JspException { 
    HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); 
    HttpServletResponse response = (HttpServletResponse) pageContext.getResponse(); 
    StringBuilder url = new StringBuilder(); 
    if (this.type == UrlType.CONTEXT_RELATIVE) { 
     // add application context to url 
     if (this.context == null) { 
      url.append(request.getContextPath()); 
     } 
     else { 
      url.append(this.context); 
     } 
    } 
    if (this.type != UrlType.RELATIVE && this.type != UrlType.ABSOLUTE && !this.value.startsWith("/")) { 
     url.append("/"); 
    } 
    url.append(replaceUriTemplateParams(this.value, this.params, this.templateParams)); 
    url.append(createQueryString(this.params, this.templateParams, (url.indexOf("?") == -1))); 

    String urlStr = url.toString(); 
    if (this.type != UrlType.ABSOLUTE) { 
     // Add the session identifier if needed 
     // (Do not embed the session identifier in a remote link!) 
     urlStr = response.encodeURL(urlStr); 
    } 

    // HTML and/or JavaScript escape, if demanded. 
    urlStr = isHtmlEscape() ? HtmlUtils.htmlEscape(urlStr) : urlStr; 
    urlStr = this.javaScriptEscape ? JavaScriptUtils.javaScriptEscape(urlStr) : urlStr; 

    return urlStr; 
} 
+0

ऐसा करने का यह बुरा तरीका है। मुझे यूआरएल उत्पन्न करने के लिए द्वारा उपयोग की जाने वाली सेवा की आवश्यकता है ... स्वच्छ तरीके की आवश्यकता है, कृपया – Nanocom

+0

किस तरह से खराब है? ऐसी कोई सेवा नहीं है, वसंत: यूआरएल समान या कम करता है, स्रोत संलग्न देखें। –

+0

ठीक है, अगर आप इसे कहते हैं ... लेकिन वह पागल है कि उन्होंने इसके बारे में नहीं सोचा, मेरी राय में! – Nanocom

20

स्प्रिंग में आप उपयोग कर सकते हैं UriComponentsBuilder और इसके ServletUriComponentsBuilder उप-वर्ग। उस here का एक उदाहरण है। आप reference docs में UriComponentsBuilder के बारे में भी पढ़ सकते हैं।

+0

धन्यवाद, लेकिन मैं यह बताना भूल गया कि मैं वसंत 3.0 का उपयोग करता हूं ... देखा यह psring 3.1 में नया है, इसलिए मुझे लगता है कि स्प्रिंग 3.0 में ऐसा कोई यूआरआई निर्माता नहीं है – Nanocom

35

रॉसन का सुझाव सोना है।

3.1 से ServletUriComponentsBuilder क्लास भी है जो स्थिर फैशन में वर्तमान अनुरोध से यूआरएल बनाता है। उदाहरण के लिए:

ServletUriComponentsBuilder.fromCurrentContextPath().path("/my/additional/path").build().toUriString(); 

यह सर्वलेट में <spring:url> के लिए निकटतम बात है।

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