我需要使用Wicket从Firefox中打开的当前网页检索URL。有人可以告诉我该怎么做吗?
答案 0 :(得分:6)
您需要查询基础HTTPServletRequest:
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;
}
}
<强>参考:强>
答案 1 :(得分:5)
Sean Patrick Floyd的解决方案似乎已经过时了wicket 1.5
如果使用wicket 1.5(或以上我猜)这里是解决方案:
RequestCycle.get().getUrlRenderer().renderFullUrl(
Url.parse(urlFor(MyPage.class,null).toString()));
<强>参考强>:
答案 2 :(得分:5)
要获取当前页面的网址,请使用webrequest和UrlRenderer:
Url url = ((WebRequest)RequestCycle.get().getRequest()).getUrl();
String fullUrl = RequestCycle.get().getUrlRenderer().renderFullUrl(url);
答案 3 :(得分:1)
根据您的确切需要,这可能无法实现。有一个简短的指南here in the Wicket wiki,但它有一些警告,特别是它只返回1.3之后的Wicket版本中的相对URL。也就是说,使用的方法是
String url = urlFor("pageMapName", MyPage.class, new PageParameters("foo=bar"));
如果您使用维基的替代方法 - 涉及表单的方法 - 请注意:getPage()
为not part of Wicket's public API。
答案 4 :(得分:1)
这很有效。我正在使用wicket 1.5;
新网址(RequestCycle.get()。getUrlRenderer()。renderFullUrl( Url.parse(urlFor(HomePage.class,NULL)的ToString())))的 getAuthority()强>;
示例:http://example.com:80/a_long_path/
getAuthproty()将返回example.com:80
getHost()将返回example.com。