2010-04-12 19 views
13

यदि मेरे पास स्थैतिक परिसंपत्ति (फ़्लैश/blah.swf) का सापेक्ष पथ है, तो प्रोग्रामेटिक रूप से इसे पूर्ण यूआरएल (http://localhost/app/flash/blah.swf) में परिवर्तित करने का सबसे अच्छा तरीका क्या है? या विकेट आवेदन का आधार यूआरएल पाने का सबसे अच्छा तरीका क्या है? मैंने RequestUtils.toAbsolutePath का उपयोग करने का प्रयास किया है, लेकिन यह विश्वसनीय रूप से काम नहीं कर रहा है और अक्सर अपवाद फेंक रहा है। इसे ऐप पर तैनात किए गए सभी सर्वरों पर काम करने की आवश्यकता है।विकेट: पूर्ण यूआरएल से संबंधित या बेस यूआरएल प्राप्त करें

उत्तर

8
RequestUtils.toAbsolutePath(RequestCycle.get().getRequest(). 
    getRelativePathPrefixToWicketHandler()); 

मेरे लिए काम किया।

+3

ध्यान दें कि यह विकेट 1.5 है, जो कोई भी आर्ग है में काम नहीं करता 'toAbsolutePath' –

0

org.apache.wicket.protocol.http.servlet.ServletWebRequest में एक विधि getRelativePathPrefixToContextRoot() है (वास्तव में एक सुपरक्लास में सार के रूप में परिभाषित)।

यह प्रयोग करने के लिए एक मानक मुहावरा

RequestCycle.get().getRequest().getRelativePathPrefixToContextRoot() + location; 
0

मैं अपने MyApplication वर्ग कि विकेट आवेदन फैली करने के लिए एक base_url संपत्ति जोड़ने के बाद कुछ इस तरह का उपयोग कर समाप्त हो गया है।

MyApplication app = (MyApplication)getApplication(); 
String appBaseUrl = app.getBaseUrl(); 
if (StringUtils.isEmpty(appBaseUrl)) { 
    appBaseUrl = RequestUtils.toAbsolutePath(urlFor(app.getHomePage(), new PageParameters()).toString()); 
    app.setBaseUrl(appBaseUrl); 
} 

// Add base URL to <script wicket:id="base_url"></script> to use with Flash 
add(new Label("base_url", "base_url = \"" + appBaseUrl + "\";").setEscapeModelStrings(false)); 
1

विकेट 1.5 के लिए वहाँ विकेट 6 के लिए जानकारी here

12

है यह है

String absoluteUrl = RequestCycle.get().getUrlRenderer().renderFullUrl(Url.parse("my-relative-url.html")); 
+1

इस विकेट के लिए काम करता है 1.5 भी – 1ac0

+3

और बेस यूआरएल 'स्ट्रिंग बेसयूआरएल = RequestCycle.get() है। GetUrlRenderer()। GetBaseUrl()। ToString() ' –

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