Калитка: Относительно абсолютного URL или получить базовый URL - PullRequest
13 голосов
/ 12 апреля 2010

Если у меня есть относительный путь к статическому ресурсу (flash / blah.swf), как лучше всего программно преобразовать его в абсолютный URL (http://localhost/app/flash/blah.swf)? или как лучше всего получить базовый URL-адрес приложения Wicket? Я пытался использовать RequestUtils.toAbsolutePath, но, похоже, он не работает надежно и часто вызывает исключения. Это необходимо для работы на всех серверах, на которых развернуто приложение.

Ответы [ 5 ]

13 голосов
/ 19 июня 2013

Для калитки 6 это

String absoluteUrl = RequestCycle.get().getUrlRenderer().renderFullUrl(Url.parse("my-relative-url.html"));
8 голосов
/ 11 октября 2010
RequestUtils.toAbsolutePath(RequestCycle.get().getRequest().
  getRelativePathPrefixToWicketHandler());

работал на меня.

1 голос
/ 18 января 2012

Для калитки 1.5 есть информация здесь

0 голосов
/ 13 апреля 2010

Я использовал что-то подобное после добавления свойства base_url в мой класс MyApplication, расширяющий приложение wicket.

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)); 
0 голосов
/ 13 апреля 2010

org.apache.wicket.protocol.http.servlet.ServletWebRequest имеет метод getRelativePathPrefixToContextRoot() (фактически определяется как абстрактный в суперклассе).

Стандартная идиома использования

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