2010-10-08 19 views

Antwort

6

Sie müssen die zugrunde liegenden HTTPServletRequest abfragen:

public class DummyPage extends WebPage{ 

    private String getRequestUrl(){ 
     // this is a wicket-specific request interface 
     final Request request = getRequest(); 
     if(request instanceof WebRequest){ 
      final WebRequest wr = (WebRequest) request; 
      // but this is the real thing 
      final HttpServletRequest hsr = wr.getHttpServletRequest(); 
      String reqUrl = hsr.getRequestURL().toString(); 
      final String queryString = hsr.getQueryString(); 
      if(queryString != null){ 
       reqUrl += "?" + queryString; 
      } 
      return reqUrl; 
     } 
     return null; 

    } 

} 

Referenz:

1

Je nachdem, was genau Sie wollen, ist dies möglicherweise nicht möglich. Es gibt eine kurze Anleitung here in the Wicket wiki, aber es hat einige Vorbehalte, insbesondere, dass es nur eine relative URL in Versionen von Wicket nach 1.3 zurückgibt. Das heißt, die verwendete Methode ist

String url = urlFor("pageMapName", MyPage.class, new PageParameters("foo=bar")); 

Wenn Sie mit dem Wiki Alternativmethode gehen — der man die Form beteiligt — seien Sie gewarnt: getPage() ist not part of Wicket's public API.

5

Die Lösung von Sean Patrick Floyd scheint für Wicket 1.5

Bei der Verwendung von Wicket 1.5 (oder höher schätze ich) hier obsolet zu sein ist die Lösung:

RequestCycle.get().getUrlRenderer().renderFullUrl(
    Url.parse(urlFor(MyPage.class,null).toString())); 

Referenz:

Getting a url for display

+0

Gut zu wissen, danke (+1) –

5

auf die aktuelle Seite die URL verwenden, um die webrequest und UrlRenderer zu erhalten:

Url url = ((WebRequest)RequestCycle.get().getRequest()).getUrl(); 
String fullUrl = RequestCycle.get().getUrlRenderer().renderFullUrl(url); 
1

Dies funktioniert. Ich benutze Wicket 1.5;

neue URL (RequestCycle.get(). GetUrlRenderer(). RenderFullUrl ( URL.parse (urlFor (HomePage.class, null) .toString()))). getAuthority();

Beispiel: http://example.com:80/a_long_path/

getAuthproty() gibt example.com:80

getHost() wird example.com zurückzukehren.