2010-04-12 8 views
13

Si tengo una ruta relativa a un activo estática (flash/blah.swf), ¿cuál es la mejor manera de convertir esta programación a una URL absoluta (http://localhost/app/flash/blah.swf)? ¿O cuál es la mejor forma de obtener la URL base de la aplicación Wicket? Intenté usar RequestUtils.toAbsolutePath, pero parece que no funciona de manera confiable y con frecuencia arroja excepciones. Esto debe funcionar en todos los servidores en los que se implementa la aplicación.Wicket: En relación con la URL absoluta o conseguir URL base

Respuesta

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

trabajó para mí.

+3

Tenga en cuenta que esto no funciona en Wicket 1.5, que no tiene un solo arg 'toAbsolutePath' –

0

org.apache.wicket.protocol.http.servlet.ServletWebRequest tiene un método getRelativePathPrefixToContextRoot() (realmente definido como abstracto en una superclase).

un lenguaje estándar para usarlo es

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

Terminé usando algo como esto después de añadir una propiedad base_url a mi clase MyApplication que se extiende la aplicación portillo.

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

Por Wicket 1.5 se disponga de información here

12

Por Wicket 6 es

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

esto funciona para portillo 1.5 también – 1ac0

+3

Y la URL base es 'String baseUrl = RequestCycle.get(). GetUrlRenderer(). GetBaseUrl(). ToString()' –

Cuestiones relacionadas